{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pathlib import Path\n",
    "import os\n",
    "cwd = Path().resolve().parents[1]\n",
    "activities_path = os.path.join(cwd , 'automagica\\\\activities.py')\n",
    "activities_rst_path = os.path.join(cwd , 'docs\\\\source\\\\activities.rst')\n",
    "github_readme_path = os.path.join(cwd , 'readme.md')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'description': 'Generate random Fernet key. Fernet guarantees that a message '\n",
      "                'encrypted using it cannot be manipulated or read without the '\n",
      "                'key. Fernet is an implementation of symmetric (also known as '\n",
      "                '“secret key”) authenticated cryptography',\n",
      " 'example': '>>> # Generate a random key\\n'\n",
      "            '>>> generate_random_key()\\n'\n",
      "            \"b'AYv6ZPVgnrUtHDbGZqAopRyAo9r0_UKrA2Rm3K_NjIo='\\n\",\n",
      " 'function_call': 'generate_random_key()',\n",
      " 'icon': 'las la-key',\n",
      " 'keywords': ['random',\n",
      "              'key',\n",
      "              'fernet',\n",
      "              'hash',\n",
      "              'security',\n",
      "              'cryptography',\n",
      "              'password',\n",
      "              'secure'],\n",
      " 'name': 'Random key',\n",
      " 'parameters': [],\n",
      " 'return': ' Random key\\n',\n",
      " 'snippet': '# Generate a random key\\ngenerate_random_key()\\n'}\n",
      "{'description': 'Encrypt text with (Fernet) key,',\n",
      " 'example': '>>> # Generate a random key\\n'\n",
      "            '>>> key = generate_random_key()\\n'\n",
      "            '>>> # Encrypt text with this key\\n'\n",
      "            \">>> encrypt_text_with_key('Sample text', key)\\n\"\n",
      "            \"b'gAAAAABd8lpG8fNqcj5eXrPPHlx4KeCm-1TgX3jkyhStMfIlgGImIa-qaINZAj8XcxPcG8iu84iT56b_qAW9c5qpe7btUFhtxQ=='\\n\",\n",
      " 'function_call': 'encrypt_text_with_key(text, key)',\n",
      " 'icon': 'las la-lock',\n",
      " 'keywords': ['random',\n",
      "              'encryption',\n",
      "              'secure',\n",
      "              'security',\n",
      "              'hash',\n",
      "              'password',\n",
      "              'fernet',\n",
      "              'text'],\n",
      " 'name': 'Encrypt text',\n",
      " 'parameters': [{'description': ' Text to be encrypted\\n', 'name': ' text'},\n",
      "                {'description': ' Fernet Encryption key\\n', 'name': ' key'}],\n",
      " 'return': ' Encrypted text\\n',\n",
      " 'snippet': '# Generate a random key\\n'\n",
      "            'key = generate_random_key()\\n'\n",
      "            '# Encrypt text with this key\\n'\n",
      "            \"encrypt_text_with_key('Sample text', key)\\n\"}\n",
      "{'description': 'Dexrypt bytes-like object to string with (Fernet) key',\n",
      " 'example': '>>> # Generate a random key\\n'\n",
      "            '>>> key = generate_random_key()\\n'\n",
      "            '>>> # Encrypt text with generated key\\n'\n",
      "            \">>> encrypted_text = encrypt_text_with_key('Sample text', key)\\n\"\n",
      "            '>>> # Decrypt text with same key\\n'\n",
      "            '>>> decrypt_text_with_key(encrypted_text, key)\\n'\n",
      "            \"'Sample text'\\n\",\n",
      " 'function_call': 'decrypt_text_with_key(encrypted_text, key)',\n",
      " 'icon': 'las la-lock-open',\n",
      " 'keywords': ['decrypt',\n",
      "              'random',\n",
      "              'unlock',\n",
      "              'un-lock hash',\n",
      "              'security',\n",
      "              'cryptography',\n",
      "              'password',\n",
      "              'secure',\n",
      "              'hash',\n",
      "              'text'],\n",
      " 'name': 'Decrypt text',\n",
      " 'parameters': [{'description': ' Text to be encrypted.\\n',\n",
      "                 'name': ' encrypted_text'},\n",
      "                {'description': ' Fernet Encryption key\\n', 'name': ' key'}],\n",
      " 'return': ' Decrypted text\\n',\n",
      " 'snippet': '# Generate a random key\\n'\n",
      "            'key = generate_random_key()\\n'\n",
      "            '# Encrypt text with generated key\\n'\n",
      "            \"encrypted_text = encrypt_text_with_key('Sample text', key)\\n\"\n",
      "            '# Decrypt text with same key\\n'\n",
      "            'decrypt_text_with_key(encrypted_text, key)\\n'}\n",
      "{'description': 'Encrypt file with (Fernet) key. Note that file will be '\n",
      "                'unusable unless unlocked with the same key.',\n",
      " 'example': '>>> # Generate a random key\\n'\n",
      "            '>>> key = generate_random_key()\\n'\n",
      "            '>>> # Create a text file to illustrate file encryption\\n'\n",
      "            '>>> text_file_path = make_text_file()\\n'\n",
      "            '>>> # Encrypt the text file\\n'\n",
      "            '>>> encrypt_file_with_key(text_file_path, key=key)\\n'\n",
      "            \"'C:\\\\\\\\Users\\\\\\\\<username>\\\\\\\\generated_text_file_encrypted.txt'\\n\",\n",
      " 'function_call': 'encrypt_file_with_key(input_path, key, output_path=None)',\n",
      " 'icon': 'las la-lock',\n",
      " 'keywords': ['encrypt', 'random', 'password', 'secure', 'secure file', 'lock'],\n",
      " 'name': 'Encrypt file',\n",
      " 'parameters': [{'description': ' Path to file to be encrypted\\n',\n",
      "                 'name': ' inputh_path'},\n",
      "                {'description': ' Fernet Encryption key\\n', 'name': ' key'},\n",
      "                {'description': ' Output path, defaults to the same directory '\n",
      "                                'with \"_encrypted\" added to the name\\n',\n",
      "                 'name': ' output_path'}],\n",
      " 'return': ' Path to encrypted file\\n',\n",
      " 'snippet': '# Generate a random key\\n'\n",
      "            'key = generate_random_key()\\n'\n",
      "            '# Create a text file to illustrate file encryption\\n'\n",
      "            'text_file_path = make_text_file()\\n'\n",
      "            '# Encrypt the text file\\n'\n",
      "            'encrypt_file_with_key(text_file_path, key=key)\\n'}\n",
      "{'description': 'Decrypts file with (Fernet) key',\n",
      " 'example': '>>> # Generate a random key\\n'\n",
      "            '>>> key = generate_random_key()\\n'\n",
      "            '>>> # Create a text file to encrypt file\\n'\n",
      "            '>>> text_file_path = make_text_file()\\n'\n",
      "            '>>> # Encrypt the text file\\n'\n",
      "            '>>> encrypted_text_file = encrypt_file_with_key(text_file_path, '\n",
      "            'key=key)\\n'\n",
      "            '>>> # Decrypt the newly encrypted file\\n'\n",
      "            '>>> decrypt_file_with_key(encrypted_text_file, key=key)\\n'\n",
      "            \"'C:\\\\\\\\Users\\\\\\\\<username>\\\\\\\\generated_text_file_encrypted_decrypted.txt'\\n\",\n",
      " 'function_call': 'decrypt_file_with_key(input_path, key, output_path=None)',\n",
      " 'icon': 'las la-lock-open',\n",
      " 'keywords': ['decrypt',\n",
      "              'random',\n",
      "              'password',\n",
      "              'secure',\n",
      "              'secure file',\n",
      "              'unlock'],\n",
      " 'name': 'Decrypt file',\n",
      " 'parameters': [{'description': ' Bytes-like file to be decrypted.\\n',\n",
      "                 'name': ' input_file'},\n",
      "                {'description': ' Path where key is stored.\\n', 'name': ' key'},\n",
      "                {'description': ' Outputfile, make sure to give this the same '\n",
      "                                'extension as basefile before encryption. '\n",
      "                                'Default is the same directory with '\n",
      "                                '\"_decrypted\" added to the name \\n',\n",
      "                 'name': ' output_file'}],\n",
      " 'return': ' Path to decrypted file\\n',\n",
      " 'snippet': '# Generate a random key\\n'\n",
      "            'key = generate_random_key()\\n'\n",
      "            '# Create a text file to encrypt file\\n'\n",
      "            'text_file_path = make_text_file()\\n'\n",
      "            '# Encrypt the text file\\n'\n",
      "            'encrypted_text_file = encrypt_file_with_key(text_file_path, '\n",
      "            'key=key)\\n'\n",
      "            '# Decrypt the newly encrypted file\\n'\n",
      "            'decrypt_file_with_key(encrypted_text_file, key=key)\\n'}\n",
      "{'description': 'Generate key based on password and salt. If both password and '\n",
      "                'salt are known the key can be regenerated.',\n",
      " 'example': '>>> # Generate a key from password\\n'\n",
      "            \">>> key = generate_key_from_password(password='Sample password')\\n\"\n",
      "            \"b'7jGGF5w_xyI0CIZGCmLlnNyUvFpNvIUY08JCHopgAmm8='\\n\",\n",
      " 'function_call': 'generate_key_from_password(password, salt=None)',\n",
      " 'icon': 'las la-lock',\n",
      " 'keywords': ['random',\n",
      "              'key',\n",
      "              'fernet',\n",
      "              'hash',\n",
      "              'security',\n",
      "              'cryptography',\n",
      "              'password',\n",
      "              'secure',\n",
      "              'salt'],\n",
      " 'name': 'Key from password',\n",
      " 'parameters': [{'description': ' Passwords\\n', 'name': ' password'},\n",
      "                {'description': ' Salt to generate key in combination with '\n",
      "                                'password. Default value is the hostname. Take '\n",
      "                                'in to account that hostname is necessary to '\n",
      "                                'generate key, e.g. when files are encrypted '\n",
      "                                \"with salt 'A' and password 'B', both elements \"\n",
      "                                'are necessary to decrypt files.\\n',\n",
      "                 'name': ' salt'}],\n",
      " 'return': ' Bytes-like object\\n',\n",
      " 'snippet': '# Generate a key from password\\n'\n",
      "            \"key = generate_key_from_password(password='Sample password')\\n\"}\n",
      "{'description': 'Generate hash from file',\n",
      " 'example': '>>> # Generate a text file to illustrate hash\\n'\n",
      "            '>>> text_file_path = make_text_file()\\n'\n",
      "            '>>> # Get hash from text file\\n'\n",
      "            '>>> generate_hash_from_file(text_file_path)\\n'\n",
      "            \"'1ba249ca5931f3c85fe44d354c2f274d'\\n\",\n",
      " 'function_call': 'generate_hash_from_file(input_path, method=\"md5\", '\n",
      "                  'buffer_size=65536)',\n",
      " 'icon': 'las la-fingerprint',\n",
      " 'keywords': ['hash',\n",
      "              'mdf5',\n",
      "              'sha256',\n",
      "              'blake2b',\n",
      "              'identifier',\n",
      "              'unique',\n",
      "              'hashing',\n",
      "              'fingerprint',\n",
      "              'comparison'],\n",
      " 'name': 'Hash from file',\n",
      " 'parameters': [{'description': ' File to hash\\n', 'name': ' input_path'},\n",
      "                {'description': \" Method for hashing, choose between 'md5', \"\n",
      "                                \"'sha256' and 'blake2b'. Note that different \"\n",
      "                                'methods generate different hashes. Default '\n",
      "                                \"method is 'md5'.\\n\",\n",
      "                 'name': ' method'},\n",
      "                {'description': ' Buffer size for reading file in chunks, '\n",
      "                                'default value is 64kb\\n',\n",
      "                 'name': ' buffer_size'}],\n",
      " 'return': ' Bytes-like object\\n',\n",
      " 'snippet': '# Generate a text file to illustrate hash\\n'\n",
      "            'text_file_path = make_text_file()\\n'\n",
      "            '# Get hash from text file\\n'\n",
      "            'generate_hash_from_file(text_file_path)\\n'}\n",
      "{'description': 'Generate hash from text. Keep in mind that MD5 is not '\n",
      "                'cryptographically secure.',\n",
      " 'example': '>>> # Generate a hast from text\\n'\n",
      "            \">>> generate_hash_from_text('Sample text')\\n\"\n",
      "            \"'1ba249ca5931f3c85fe44d354c2f274d'\\n\",\n",
      " 'function_call': 'generate_hash_from_text(text, method=\"md5\")',\n",
      " 'icon': 'las la-fingerprint',\n",
      " 'keywords': ['Hash',\n",
      "              'mdf5',\n",
      "              'sha256',\n",
      "              'blake2b',\n",
      "              'identifier',\n",
      "              'unique',\n",
      "              'hashing',\n",
      "              'fingerprint',\n",
      "              'text',\n",
      "              'comparison'],\n",
      " 'name': 'Hash from text',\n",
      " 'parameters': [{'description': ' Text to hash\\n', 'name': ' text'},\n",
      "                {'description': \" Method for hashing, choose between 'md5', \"\n",
      "                                \"'sha256' and 'blake2b'. Note that different \"\n",
      "                                'methods generate different hashes. Default '\n",
      "                                \"method is 'md5'.\\n\",\n",
      "                 'name': ' method'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Generate a hast from text\\n'\n",
      "            \"generate_hash_from_text('Sample text')\\n\"}\n",
      "{'description': 'Random numbers can be integers (not a fractional number) or a '\n",
      "                'float (fractional number).',\n",
      " 'example': '>>> # Generate a random number\\n>>> generate_random_number()\\n7\\n',\n",
      " 'function_call': 'generate_random_number(lower_limit=0, upper_limit=100, '\n",
      "                  'fractional=False)',\n",
      " 'icon': 'las la-dice',\n",
      " 'keywords': ['random number',\n",
      "              'random integer',\n",
      "              'dice',\n",
      "              'gamble',\n",
      "              'rng',\n",
      "              'random'],\n",
      " 'name': 'Random number',\n",
      " 'parameters': [{'description': ' Lower limit for random number\\n',\n",
      "                 'name': ' lower_limit'},\n",
      "                {'description': ' Upper limit for random number\\n',\n",
      "                 'name': ' upper_limit'},\n",
      "                {'description': ' Setting this to True will generate '\n",
      "                                'fractional number. Default value is False and '\n",
      "                                'only generates whole numbers.\\n',\n",
      "                 'name': ' fractional'}],\n",
      " 'return': ' Random integer or float\\n',\n",
      " 'snippet': '# Generate a random number\\ngenerate_random_number()\\n'}\n",
      "{'description': 'Generates all kinds of random data. Specifying locale changes '\n",
      "                'format for some options',\n",
      " 'example': '>>> # Generate random data\\n'\n",
      "            '>>> generate_random_data()\\n'\n",
      "            \"'Banana'\\n\",\n",
      " 'function_call': 'generate_random_data(locale=None, type=None)',\n",
      " 'icon': 'las la-digital_tachograph',\n",
      " 'keywords': ['random',\n",
      "              'lorem ipsum',\n",
      "              'gsm',\n",
      "              'cell',\n",
      "              'cellphone',\n",
      "              'telephone',\n",
      "              'mobile',\n",
      "              'number',\n",
      "              'smartphone',\n",
      "              'text generater',\n",
      "              'filler',\n",
      "              'place holder',\n",
      "              'noise',\n",
      "              'random text',\n",
      "              'random txt',\n",
      "              'text generation',\n",
      "              'fake',\n",
      "              'code',\n",
      "              'email',\n",
      "              'generate',\n",
      "              'generator',\n",
      "              'generic'],\n",
      " 'name': 'Random data',\n",
      " 'parameters': [{'description': ' Choose a specific characteristic or '\n",
      "                                'attribute from fake person\\n',\n",
      "                 'name': ' attribute'},\n",
      "                {'description': ' Add a locale to generates typical data for '\n",
      "                                'selected locale.\\n',\n",
      "                 'name': ' locale'}],\n",
      " 'return': ' Random data as string\\n',\n",
      " 'snippet': '# Generate random data\\ngenerate_random_data()\\n'}\n",
      "{'description': 'Generates a random boolean (True or False)',\n",
      " 'example': '>>> # Generate a random boolean\\n'\n",
      "            '>>> generate_random_boolean()\\n'\n",
      "            'True\\n',\n",
      " 'function_call': 'generate_random_boolean()',\n",
      " 'icon': 'las la-coins',\n",
      " 'keywords': ['random',\n",
      "              'dice',\n",
      "              'gamble',\n",
      "              'rng',\n",
      "              'coin',\n",
      "              'coinflip',\n",
      "              'heads',\n",
      "              'tails'],\n",
      " 'name': 'Random boolean',\n",
      " 'parameters': [],\n",
      " 'return': ' Boolean\\n',\n",
      " 'snippet': '# Generate a random boolean\\ngenerate_random_boolean()\\n'}\n",
      "{'description': 'Generates a random name. Adding a locale adds a more common '\n",
      "                'name in the specified locale. Provides first name and last '\n",
      "                'name.',\n",
      " 'example': '>>> # Generate a random name\\n'\n",
      "            '>>> generate_random_name()\\n'\n",
      "            \"'Michelle Murphy'\\n\",\n",
      " 'function_call': 'generate_random_name(locale=None, name=None)',\n",
      " 'icon': 'las la-user-tag',\n",
      " 'keywords': ['random',\n",
      "              'dummy name',\n",
      "              'name',\n",
      "              'name generater',\n",
      "              'fake person',\n",
      "              'fake',\n",
      "              'person',\n",
      "              'surname',\n",
      "              'lastname',\n",
      "              'fake name generator'],\n",
      " 'name': 'Random name',\n",
      " 'parameters': [{'description': ' Add a locale to generate popular name for '\n",
      "                                'selected locale.\\n',\n",
      "                 'name': ' locale'},\n",
      "                {'description': ' Choose to generate first, last or full '\n",
      "                                'name.\\n',\n",
      "                 'name': ' name'}],\n",
      " 'return': ' Random name as string\\n',\n",
      " 'snippet': '# Generate a random name\\ngenerate_random_name()\\n'}\n",
      "{'description': 'Generates a random sentence. Specifying locale changes '\n",
      "                'language and content based on locale.',\n",
      " 'example': '>>> # Generate a random sentence\\n'\n",
      "            '>>> generate_random_words()\\n'\n",
      "            \"'The age of automation is going to be the age of \"\n",
      "            \"do-it-yourself'\\n\",\n",
      " 'function_call': 'generate_random_words(locale=None, type=None)',\n",
      " 'icon': 'las la-comment',\n",
      " 'keywords': ['random',\n",
      "              'sentence',\n",
      "              'lorem ipsum',\n",
      "              'text generater',\n",
      "              'filler',\n",
      "              'place holder',\n",
      "              'noise',\n",
      "              'random text',\n",
      "              'random txt',\n",
      "              'text generation',\n",
      "              'nlp'],\n",
      " 'name': 'Random words',\n",
      " 'parameters': [{'description': ' Specify type of words to generate\\n',\n",
      "                 'name': ' type'},\n",
      "                {'description': ' Add a locale to generate text for selected '\n",
      "                                'locale.\\n',\n",
      "                 'name': ' locale'}],\n",
      " 'return': ' Random words as string\\n',\n",
      " 'snippet': '# Generate a random sentence\\ngenerate_random_words()\\n'}\n",
      "{'description': 'Generates a random address. Specifying locale changes random '\n",
      "                'locations and streetnames based on locale.',\n",
      " 'example': '>>> # Generate a random address\\n'\n",
      "            '>>> generate_random_address()\\n'\n",
      "            \"'123 Robot Avenue'\\n\",\n",
      " 'function_call': 'generate_random_address(locale=None, format=None)',\n",
      " 'icon': 'las la-map-marker',\n",
      " 'keywords': ['random',\n",
      "              'address',\n",
      "              'data',\n",
      "              'street',\n",
      "              'city',\n",
      "              'postal',\n",
      "              'dummy name',\n",
      "              'name',\n",
      "              'name generater',\n",
      "              'fake person',\n",
      "              'fake',\n",
      "              'person',\n",
      "              'surname',\n",
      "              'lastname',\n",
      "              'fake name generator'],\n",
      " 'name': 'Random address',\n",
      " 'parameters': [{'description': ' Choose a specific part or format for the '\n",
      "                                'address\\n',\n",
      "                 'name': ' format'},\n",
      "                {'description': ' Add a locale to generate typical address for '\n",
      "                                'selected locale.\\n',\n",
      "                 'name': ' locale'}],\n",
      " 'return': ' Name as string\\n',\n",
      " 'snippet': '# Generate a random address\\ngenerate_random_address()\\n'}\n",
      "{'description': 'Generates a random beep, only works on Windows',\n",
      " 'example': '>>> # Generate a random beep\\n>>> generate_random_beep()\\n',\n",
      " 'function_call': 'generate_random_beep(max_duration=2000, max_frequency=5000)',\n",
      " 'icon': 'las la-volume-up',\n",
      " 'keywords': ['beep', 'sound', 'random', 'noise', 'alert', 'notification'],\n",
      " 'name': 'Random beep',\n",
      " 'parameters': [{'description': ' Maximum random duration in miliseconds. '\n",
      "                                'Default value is 2 miliseconds\\n',\n",
      "                 'name': ' max_duration'},\n",
      "                {'description': ' Maximum random frequency in Hz. Default '\n",
      "                                'value is 5000 Hz.\\n',\n",
      "                 'name': ' max_frequency'}],\n",
      " 'return': ' Sound\\n',\n",
      " 'snippet': '# Generate a random beep\\ngenerate_random_beep()\\n'}\n",
      "{'description': 'Generates a random date.',\n",
      " 'example': '>>> # Generate a random date\\n'\n",
      "            '>>> generate_random_date()\\n'\n",
      "            \"01/01/2020 13:37'\\n\",\n",
      " 'function_call': 'generate_random_date(formatting=\"%m/%d/%Y %I%M\", '\n",
      "                  'days_in_past=1000)',\n",
      " 'icon': 'las la-calendar',\n",
      " 'keywords': ['random',\n",
      "              'date',\n",
      "              'datetime',\n",
      "              'random date',\n",
      "              'fake date ',\n",
      "              'calendar'],\n",
      " 'name': 'Random date',\n",
      " 'parameters': [{'description': ' Days in the past for which oldest random '\n",
      "                                'date is generated, default is 1000 days\\n',\n",
      "                 'name': ' days_in_past'},\n",
      "                {'description': \" Formatting of the dates, replace with 'None' \"\n",
      "                                'to get raw datetime format. e.g. '\n",
      "                                \"format='Current month is %B' generates \"\n",
      "                                \"'Current month is Januari' and \"\n",
      "                                \"format='%m/%d/%Y %I:%M' generates format \"\n",
      "                                '01/01/1900 00:00. \\n',\n",
      "                 'name': ' formatting'}],\n",
      " 'return': ' Random date as string\\n',\n",
      " 'snippet': '# Generate a random date\\ngenerate_random_date()\\n'}\n",
      "{'description': \"Generates today's date.\",\n",
      " 'example': '>>> # Generate a random date\\n'\n",
      "            '>>> generate_date_today()\\n'\n",
      "            \"'01/01/2022'\\n\",\n",
      " 'function_call': 'generate_date_today(formatting=\"%m/%d/%Y\")',\n",
      " 'icon': 'las la-calendar',\n",
      " 'keywords': ['random',\n",
      "              'date',\n",
      "              'today',\n",
      "              'now',\n",
      "              'today date',\n",
      "              'time',\n",
      "              'datetime',\n",
      "              'random date',\n",
      "              'fake date ',\n",
      "              'calendar'],\n",
      " 'name': \"Today's date\",\n",
      " 'parameters': [{'description': \" Formatting of the dates, replace with 'None' \"\n",
      "                                'to get raw datetime format. e.g. '\n",
      "                                \"format='Current month is %B' generates \"\n",
      "                                \"'Current month is Januari' and \"\n",
      "                                \"format='%m/%d/%Y %I:%M' generates format \"\n",
      "                                '01/01/1900 00:00. \\n',\n",
      "                 'name': ' formatting'}],\n",
      " 'return': ' Random date as string\\n',\n",
      " 'snippet': '# Generate a random date\\ngenerate_date_today()\\n'}\n",
      "{'description': 'Generates a random UUID4 (universally unique identifier). '\n",
      "                'While the probability that a UUID will be duplicated is not '\n",
      "                'zero, it is close enough to zero to be negligible.',\n",
      " 'example': '>>> # Generate unique identifier\\n'\n",
      "            '>>> generate_unique_identifier()\\n'\n",
      "            \"'d72fd7ea-d682-4f78-8ca1-0ed34142a992'\\n\",\n",
      " 'function_call': 'generate_unique_identifier()',\n",
      " 'icon': 'las la-random',\n",
      " 'keywords': ['unique', 'identifier', 'primary key', 'random'],\n",
      " 'name': 'Generate unique identifier',\n",
      " 'parameters': [],\n",
      " 'return': ' Identifier as string\\n',\n",
      " 'snippet': '# Generate unique identifier\\ngenerate_unique_identifier()\\n'}\n",
      "{'description': 'Display custom OSD (on-screen display) message. Can be used '\n",
      "                'to display a message for a limited amount of time. Can be '\n",
      "                'used for illustration, debugging or as OSD.',\n",
      " 'example': '>>> # Display overlay message\\n>>> display_osd_message()\\n',\n",
      " 'function_call': 'display_osd_message(message=\"Example message\", seconds=5)',\n",
      " 'icon': 'las la-tv',\n",
      " 'keywords': ['message box',\n",
      "              'osd',\n",
      "              'overlay',\n",
      "              'info warning',\n",
      "              'info',\n",
      "              'popup',\n",
      "              'window',\n",
      "              'feedback',\n",
      "              'screen',\n",
      "              'login',\n",
      "              'attended'],\n",
      " 'name': 'Display overlay message',\n",
      " 'parameters': [{'description': ' Message to be displayed\\n',\n",
      "                 'name': ' message'},\n",
      "                {'description': ' Duration in seconds for message to be '\n",
      "                                'displayed\\n',\n",
      "                 'name': ' seconds'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Display overlay message\\ndisplay_osd_message()\\n'}\n",
      "{'description': 'Print message in console. Can be used to display data in the '\n",
      "                'Automagica Flow console',\n",
      " 'example': '>>> # Print in console\\n>>> print_console()\\n',\n",
      " 'function_call': 'print_console(data=\"Example print\")',\n",
      " 'icon': 'las la-tv',\n",
      " 'keywords': ['print',\n",
      "              'box',\n",
      "              'osd',\n",
      "              'data',\n",
      "              'debugging info',\n",
      "              'popup',\n",
      "              'window',\n",
      "              'feedback',\n",
      "              'screen',\n",
      "              'login',\n",
      "              'attended'],\n",
      " 'name': 'Print message in console',\n",
      " 'parameters': [{'description': ' Data to be printed\\n', 'name': ' data'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Print in console\\nprint_console()\\n'}\n",
      "{'description': 'headless=False,incognito=False,disable_extension=False,maximize_window=True,focus_window=True,):\"\"\"Open '\n",
      "                'Chrome Browser',\n",
      " 'example': '>>> # Open the browser\\n'\n",
      "            '>>> browser = Chrome()\\n'\n",
      "            '>>> # Go to a website\\n'\n",
      "            \">>> browser.get('https://automagica.com')\\n\"\n",
      "            '>>> # Close browser\\n'\n",
      "            '>>> browser.quit()\\n',\n",
      " 'function_call': 'Chrome()',\n",
      " 'icon': 'lab la-chrome',\n",
      " 'keywords': ['chrome',\n",
      "              'browsing',\n",
      "              'browser',\n",
      "              'internet',\n",
      "              'surfing',\n",
      "              'web',\n",
      "              'webscraping',\n",
      "              'www',\n",
      "              'selenium',\n",
      "              'crawling',\n",
      "              'webtesting',\n",
      "              'mozilla',\n",
      "              'firefox',\n",
      "              'internet explorer'],\n",
      " 'name': 'self,',\n",
      " 'parameters': [{'description': ' Do not load images (bool). This could speed '\n",
      "                                'up loading pages\\n',\n",
      "                 'name': ' load_images'},\n",
      "                {'description': ' Run headless, this means running without a '\n",
      "                                'visible window (bool)\\n',\n",
      "                 'name': ' headless'},\n",
      "                {'description': ' Run in incognito mode\\n',\n",
      "                 'name': ' incognito'},\n",
      "                {'description': ' Disable extensions\\n',\n",
      "                 'name': ' disable_extension'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open the browser\\n'\n",
      "            'browser = Chrome()\\n'\n",
      "            '# Go to a website\\n'\n",
      "            \"browser.get('https://automagica.com')\\n\"\n",
      "            '# Close browser\\n'\n",
      "            'browser.quit()\\n'}\n",
      "{'description': 'Save all images on current page in the Browser',\n",
      " 'example': '>>> # Open the browser\\n'\n",
      "            '>>> browser = Chrome()\\n'\n",
      "            '>>> # Go to a website\\n'\n",
      "            \">>> browser.get('https://www.nytimes.com/')\\n\"\n",
      "            '>>> # Save all images\\n'\n",
      "            '>>> browser.save_all_images()\\n'\n",
      "            '>>> browser.quit()\\n'\n",
      "            \"['C:\\\\\\\\Users\\\\\\\\<username>\\\\\\\\image1.png', \"\n",
      "            \"'C:\\\\\\\\Users\\\\\\\\<username>\\\\\\\\image2.jpg', \"\n",
      "            \"'C:\\\\\\\\Users\\\\\\\\<username>\\\\\\\\image4.gif']\\n\",\n",
      " 'function_call': 'save_all_images(output_path=None)',\n",
      " 'icon': 'las la-images',\n",
      " 'keywords': ['image scraping',\n",
      "              'chrome',\n",
      "              'internet',\n",
      "              'browsing',\n",
      "              'browser',\n",
      "              'surfing',\n",
      "              'web',\n",
      "              'webscraping',\n",
      "              'www',\n",
      "              'selenium',\n",
      "              'crawling',\n",
      "              'webtesting',\n",
      "              'mozilla',\n",
      "              'firefox',\n",
      "              'internet explorer'],\n",
      " 'name': 'Save all images',\n",
      " 'parameters': [{'description': ' Path where images can be saved. Default '\n",
      "                                'value is home directory.\\n',\n",
      "                 'name': ' output_path'}],\n",
      " 'return': ' List with paths to images\\n',\n",
      " 'snippet': '# Open the browser\\n'\n",
      "            'browser = Chrome()\\n'\n",
      "            '# Go to a website\\n'\n",
      "            \"browser.get('https://www.nytimes.com/')\\n\"\n",
      "            '# Save all images\\n'\n",
      "            'browser.save_all_images()\\n'\n",
      "            'browser.quit()\\n'}\n",
      "{'description': 'Browse to URL.',\n",
      " 'example': '>>> # Open the browser\\n'\n",
      "            '>>> browser = Chrome()\\n'\n",
      "            '>>> # Go to a website\\n'\n",
      "            \">>> browser.browse_to('https://nytimes.com')\\n\",\n",
      " 'function_call': 'browse_to(url)',\n",
      " 'icon': 'lab la-chrome',\n",
      " 'keywords': ['chrome',\n",
      "              'element',\n",
      "              'browse to',\n",
      "              'browse',\n",
      "              'surf',\n",
      "              'surf to',\n",
      "              'go to',\n",
      "              'get',\n",
      "              'internet',\n",
      "              'browsing',\n",
      "              'browser',\n",
      "              'surfing',\n",
      "              'web',\n",
      "              'webscraping',\n",
      "              'www',\n",
      "              'selenium',\n",
      "              'crawling',\n",
      "              'webtesting',\n",
      "              'mozilla',\n",
      "              'firefox',\n",
      "              'internet explorer'],\n",
      " 'name': 'Browse to URL',\n",
      " 'parameters': [{'description': ' Url to browser to\\n', 'name': ' url'}],\n",
      " 'return': ' Webpage\\n',\n",
      " 'snippet': '# Open the browser\\n'\n",
      "            'browser = Chrome()\\n'\n",
      "            '# Go to a website\\n'\n",
      "            \"browser.browse_to('https://nytimes.com')\\n\"}\n",
      "{'description': 'Find all elements by their text. Text does not need to match '\n",
      "                'exactly, part of text is enough.',\n",
      " 'example': '>>> # Open the browser\\n'\n",
      "            '>>> browser = Chrome()\\n'\n",
      "            '>>> # Go to a website\\n'\n",
      "            \">>> browser.get('https://nytimes.com')\\n\"\n",
      "            '>>> # Find elements by text\\n'\n",
      "            \">>> browser.find_elements_by_text('world')\\n\"\n",
      "            '[webelement1, webelement2 , .. ]\\n',\n",
      " 'function_call': 'find_elements_by_text(text)',\n",
      " 'icon': 'las la-align-center',\n",
      " 'keywords': ['element',\n",
      "              'element by text',\n",
      "              'chrome',\n",
      "              'internet',\n",
      "              'browsing',\n",
      "              'browser',\n",
      "              'surfing',\n",
      "              'web',\n",
      "              'webscraping',\n",
      "              'www',\n",
      "              'selenium',\n",
      "              'crawling',\n",
      "              'webtesting',\n",
      "              'mozilla',\n",
      "              'firefox',\n",
      "              'internet explorer'],\n",
      " 'name': 'Find elements by text',\n",
      " 'parameters': [{'description': ' Text to find elements by\\n',\n",
      "                 'name': ' text'}],\n",
      " 'return': ' Elements that matched with text\\n',\n",
      " 'snippet': '# Open the browser\\n'\n",
      "            'browser = Chrome()\\n'\n",
      "            '# Go to a website\\n'\n",
      "            \"browser.get('https://nytimes.com')\\n\"\n",
      "            '# Find elements by text\\n'\n",
      "            \"browser.find_elements_by_text('world')\\n\"}\n",
      "{'description': 'Find all links on a webpage in the browser',\n",
      " 'example': '>>> # Open the browser\\n'\n",
      "            '>>> browser = Chrome()\\n'\n",
      "            '>>> # Go to a website\\n'\n",
      "            \">>> browser.get('https://nytimes.com')\\n\"\n",
      "            '>>> # Find elements by text\\n'\n",
      "            '>>> browser.find_all_links()\\n'\n",
      "            '[webelement1, webelement2 , .. ]\\n',\n",
      " 'function_call': 'find_all_links(contains=\"\")',\n",
      " 'icon': 'las la-window-restore',\n",
      " 'keywords': ['random',\n",
      "              'element,link',\n",
      "              'links element by text',\n",
      "              'chrome',\n",
      "              'internet',\n",
      "              'browsing',\n",
      "              'browser',\n",
      "              'surfing',\n",
      "              'web',\n",
      "              'webscraping',\n",
      "              'www',\n",
      "              'selenium',\n",
      "              'crawling',\n",
      "              'webtesting',\n",
      "              'mozilla',\n",
      "              'firefox',\n",
      "              'internet explorer'],\n",
      " 'name': 'Find all links',\n",
      " 'parameters': [{'description': ' Criteria of substring that url must contain '\n",
      "                                'to be included\\n',\n",
      "                 'name': ' contains'}],\n",
      " 'return': ' Links\\n',\n",
      " 'snippet': '# Open the browser\\n'\n",
      "            'browser = Chrome()\\n'\n",
      "            '# Go to a website\\n'\n",
      "            \"browser.get('https://nytimes.com')\\n\"\n",
      "            '# Find elements by text\\n'\n",
      "            'browser.find_all_links()\\n'}\n",
      "{'description': 'Find first link on a webpage',\n",
      " 'example': '>>> # Open the browser\\n'\n",
      "            '>>> browser = Chrome()\\n'\n",
      "            '>>> # Go to a website\\n'\n",
      "            \">>> browser.get('https://nytimes.com')\\n\"\n",
      "            '>>> # Find elements by text\\n'\n",
      "            '>>> browser.find_first_link()\\n',\n",
      " 'function_call': 'find_first_link(contains=None)',\n",
      " 'icon': 'las la-window-restore',\n",
      " 'keywords': ['random',\n",
      "              'link',\n",
      "              'links',\n",
      "              'element',\n",
      "              'element by text',\n",
      "              'chrome',\n",
      "              'internet',\n",
      "              'browsing',\n",
      "              'browser',\n",
      "              'surfing',\n",
      "              'web',\n",
      "              'webscraping',\n",
      "              'www',\n",
      "              'selenium',\n",
      "              'crawling',\n",
      "              'webtesting',\n",
      "              'mozilla',\n",
      "              'firefox',\n",
      "              'internet explorer'],\n",
      " 'name': 'Find first link on a webpage',\n",
      " 'parameters': [{'description': ' Criteria of substring that url must contain '\n",
      "                                'to be included\\n',\n",
      "                 'name': ' contains'}],\n",
      " 'return': ' First link\\n',\n",
      " 'snippet': '# Open the browser\\n'\n",
      "            'browser = Chrome()\\n'\n",
      "            '# Go to a website\\n'\n",
      "            \"browser.get('https://nytimes.com')\\n\"\n",
      "            '# Find elements by text\\n'\n",
      "            'browser.find_first_link()\\n'}\n",
      "{'description': 'Get all the raw body text from current webpage',\n",
      " 'example': '>>> # Open the browser\\n'\n",
      "            '>>> browser = Chrome()\\n'\n",
      "            '>>> # Go to a website\\n'\n",
      "            \">>> browser.get('https://nytimes.com')\\n\"\n",
      "            '>>> # Get text from page\\n'\n",
      "            '>>> browser.get_text_on_webpage()\\n',\n",
      " 'function_call': 'get_text_on_webpage(self)',\n",
      " 'icon': 'las la-window-restore',\n",
      " 'keywords': ['random',\n",
      "              'link',\n",
      "              'links',\n",
      "              'element',\n",
      "              'element by text',\n",
      "              'chrome',\n",
      "              'internet',\n",
      "              'browsing',\n",
      "              'browser',\n",
      "              'surfing',\n",
      "              'web',\n",
      "              'webscraping',\n",
      "              'www',\n",
      "              'selenium',\n",
      "              'crawling',\n",
      "              'webtesting',\n",
      "              'mozilla',\n",
      "              'firefox',\n",
      "              'internet explorer'],\n",
      " 'name': 'Get all text on webwpage',\n",
      " 'parameters': [],\n",
      " 'return': ' Text\\n',\n",
      " 'snippet': '# Open the browser\\n'\n",
      "            'browser = Chrome()\\n'\n",
      "            '# Go to a website\\n'\n",
      "            \"browser.get('https://nytimes.com')\\n\"\n",
      "            '# Get text from page\\n'\n",
      "            'browser.get_text_on_webpage()\\n'}\n",
      "{'description': 'Highlight elements in yellow in the browser',\n",
      " 'example': '>>> # Open the browser\\n'\n",
      "            '>>> browser = Chrome()\\n'\n",
      "            '>>> # Go to a website\\n'\n",
      "            \">>> browser.get('https://wikipedia.org')\\n\"\n",
      "            '>>> # Find first link on page\\n'\n",
      "            '>>> first_link = browser.find_elements_by_xpath(\"//a[@href]\")[0]\\n'\n",
      "            '>>> # Highlight first link\\n'\n",
      "            '>>> browser.highlight(first_link)\\n',\n",
      " 'function_call': 'highlight(element)',\n",
      " 'icon': 'las la-highlighter',\n",
      " 'keywords': ['element',\n",
      "              'element by text',\n",
      "              'chrome',\n",
      "              'internet',\n",
      "              'browsing',\n",
      "              'browser',\n",
      "              'surfing',\n",
      "              'web',\n",
      "              'webscraping',\n",
      "              'www',\n",
      "              'selenium',\n",
      "              'crawling',\n",
      "              'webtesting',\n",
      "              'mozilla',\n",
      "              'firefox',\n",
      "              'internet explorer'],\n",
      " 'name': 'Highlight element',\n",
      " 'parameters': [{'description': ' Element to highlight\\n', 'name': ' element'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open the browser\\n'\n",
      "            'browser = Chrome()\\n'\n",
      "            '# Go to a website\\n'\n",
      "            \"browser.get('https://wikipedia.org')\\n\"\n",
      "            '# Find first link on page\\n'\n",
      "            'first_link = browser.find_elements_by_xpath(\"//a[@href]\")[0]\\n'\n",
      "            '# Highlight first link\\n'\n",
      "            'browser.highlight(first_link)\\n'}\n",
      "{'description': 'Quit the browser by exiting gracefully. One can also use the '\n",
      "                \"native 'quit' function\",\n",
      " 'example': '>>> # Open the browser\\n'\n",
      "            '>>> browser = Chrome()\\n'\n",
      "            '>>> # Go to a website\\n'\n",
      "            \">>> browser.get('https://automagica.com')\\n\"\n",
      "            '>>> # Close browser\\n'\n",
      "            '>>> browser.exit()\\n',\n",
      " 'function_call': 'exit(self)',\n",
      " 'icon': 'las la-window-close',\n",
      " 'keywords': ['quit',\n",
      "              'exit',\n",
      "              'close',\n",
      "              'element',\n",
      "              'element by text',\n",
      "              'chrome',\n",
      "              'internet',\n",
      "              'browsing',\n",
      "              'browser',\n",
      "              'surfing',\n",
      "              'web',\n",
      "              'webscraping',\n",
      "              'www',\n",
      "              'selenium',\n",
      "              'crawling',\n",
      "              'webtesting',\n",
      "              'mozilla',\n",
      "              'firefox',\n",
      "              'internet explorer'],\n",
      " 'name': 'Exit the browser',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': '# Open the browser\\n'\n",
      "            'browser = Chrome()\\n'\n",
      "            '# Go to a website\\n'\n",
      "            \"browser.get('https://automagica.com')\\n\"\n",
      "            '# Close browser\\n'\n",
      "            'browser.exit()\\n'}\n",
      "{'description': 'Find all elements with specified xpath on a webpage in the '\n",
      "                \"the browser. Can also use native 'find_elements_by_xpath'\",\n",
      " 'example': '>>> # Open the browser\\n'\n",
      "            '>>> browser = Chrome()\\n'\n",
      "            '>>> # Go to a website\\n'\n",
      "            \">>> browser.get('https://wikipedia.org')\\n\"\n",
      "            '>>> # Find elements by xpaths\\n'\n",
      "            \">>> browser.by_xpaths('//*[@id=\\\\'js-link-box-en\\\\']')\\n\"\n",
      "            '[webelement1, webelement2 , .. ]\\n',\n",
      " 'function_call': 'by_xpaths(element)',\n",
      " 'icon': 'las la-times',\n",
      " 'keywords': ['random',\n",
      "              'element',\n",
      "              'xpath',\n",
      "              'xml',\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              'element by text',\n",
      "              'chrome',\n",
      "              'internet',\n",
      "              'browsing',\n",
      "              'browser',\n",
      "              'surfing',\n",
      "              'web',\n",
      "              'webscraping',\n",
      "              'www',\n",
      "              'selenium',\n",
      "              'crawling',\n",
      "              'webtesting',\n",
      "              'mozilla',\n",
      "              'firefox',\n",
      "              'internet explorer'],\n",
      " 'name': 'Find all XPaths',\n",
      " 'parameters': [{'description': ' Xpath of element\\n', 'name': ' element'}],\n",
      " 'return': ' Element by xpaths\\n',\n",
      " 'snippet': '# Open the browser\\n'\n",
      "            'browser = Chrome()\\n'\n",
      "            '# Go to a website\\n'\n",
      "            \"browser.get('https://wikipedia.org')\\n\"\n",
      "            '# Find elements by xpaths\\n'\n",
      "            \"browser.by_xpaths('//*[@id=\\\\'js-link-box-en\\\\']')\\n\"}\n",
      "{'description': 'Find all element with specified xpath on a webpage in the the '\n",
      "                \"browser. Can also use native 'find_elements_by_xpath'\",\n",
      " 'example': '>>> # Open the browser\\n'\n",
      "            '>>> browser = Chrome()\\n'\n",
      "            '>>> # Go to a website\\n'\n",
      "            \">>> browser.get('https://wikipedia.org')\\n\"\n",
      "            '>>> # Find element by xpath\\n'\n",
      "            \">>> element = browser.by_xpath('//*[@id=\\\\'js-link-box-en\\\\']')\\n\"\n",
      "            '>>> # We can now use this element, for example to click on\\n'\n",
      "            '>>> element.click()\\n',\n",
      " 'function_call': 'by_xpath(element)',\n",
      " 'icon': 'las la-times',\n",
      " 'keywords': ['random',\n",
      "              'xpath',\n",
      "              'element',\n",
      "              'xml element by text',\n",
      "              'chrome',\n",
      "              'internet',\n",
      "              'browsing',\n",
      "              'browser',\n",
      "              'surfing',\n",
      "              'web',\n",
      "              'webscraping',\n",
      "              'www',\n",
      "              'selenium',\n",
      "              'crawling',\n",
      "              'webtesting',\n",
      "              'mozilla',\n",
      "              'firefox',\n",
      "              'internet explorer'],\n",
      " 'name': 'Find XPath in browser',\n",
      " 'parameters': [{'description': ' Xpath of element\\n', 'name': ' element'}],\n",
      " 'return': ' Element by xpath\\n',\n",
      " 'snippet': '# Open the browser\\n'\n",
      "            'browser = Chrome()\\n'\n",
      "            '# Go to a website\\n'\n",
      "            \"browser.get('https://wikipedia.org')\\n\"\n",
      "            '# Find element by xpath\\n'\n",
      "            \"element = browser.by_xpath('//*[@id=\\\\'js-link-box-en\\\\']')\\n\"\n",
      "            '# We can now use this element, for example to click on\\n'\n",
      "            'element.click()\\n'}\n",
      "{'description': 'Find element with specified class on a webpage in the the '\n",
      "                \"browser. Can also use native 'find_element_by_class_name'\",\n",
      " 'example': '>>> # Open the browser\\n'\n",
      "            '>>> browser = Chrome()\\n'\n",
      "            '>>> # Go to a website\\n'\n",
      "            \">>> browser.get('https://wikipedia.org')\\n\"\n",
      "            '>>> # Find element by class\\n'\n",
      "            \">>> element = browser.by_class('search-input')\\n\"\n",
      "            '>>> # We can now use this element, for example to click on\\n'\n",
      "            '>>> element.click()\\n',\n",
      " 'function_call': 'by_class(element)',\n",
      " 'icon': 'las la-times',\n",
      " 'keywords': ['browser',\n",
      "              'class',\n",
      "              'classes',\n",
      "              'element',\n",
      "              'xml element by text',\n",
      "              'chrome',\n",
      "              'internet',\n",
      "              'browsing',\n",
      "              'browser',\n",
      "              'surfing',\n",
      "              'web',\n",
      "              'webscraping',\n",
      "              'www',\n",
      "              'selenium',\n",
      "              'crawling',\n",
      "              'webtesting',\n",
      "              'mozilla',\n",
      "              'firefox',\n",
      "              'internet explorer'],\n",
      " 'name': 'Find class in browser',\n",
      " 'parameters': [{'description': ' Class of element\\n', 'name': ' element'}],\n",
      " 'return': ' Element by class\\n',\n",
      " 'snippet': '# Open the browser\\n'\n",
      "            'browser = Chrome()\\n'\n",
      "            '# Go to a website\\n'\n",
      "            \"browser.get('https://wikipedia.org')\\n\"\n",
      "            '# Find element by class\\n'\n",
      "            \"element = browser.by_class('search-input')\\n\"\n",
      "            '# We can now use this element, for example to click on\\n'\n",
      "            'element.click()\\n'}\n",
      "{'description': 'Find all elements with specified class on a webpage in the '\n",
      "                'the browser. Can also use native '\n",
      "                \"'find_elements_by_class_name' function\",\n",
      " 'example': '>>> # Open the browser\\n'\n",
      "            '>>> browser = Chrome()\\n'\n",
      "            '>>> # Go to a website\\n'\n",
      "            \">>> browser.get('https://wikipedia.org')\\n\"\n",
      "            '>>> # Find elements by class\\n'\n",
      "            \">>> elements = browser.by_classes('search-input')\\n\",\n",
      " 'function_call': 'by_classes(element)',\n",
      " 'icon': 'las la-times',\n",
      " 'keywords': ['browser',\n",
      "              'class',\n",
      "              'classes',\n",
      "              'element',\n",
      "              'xml element by text',\n",
      "              'chrome',\n",
      "              'internet',\n",
      "              'browsing',\n",
      "              'browser',\n",
      "              'surfing',\n",
      "              'web',\n",
      "              'webscraping',\n",
      "              'www',\n",
      "              'selenium',\n",
      "              'crawling',\n",
      "              'webtesting',\n",
      "              'mozilla',\n",
      "              'firefox',\n",
      "              'internet explorer'],\n",
      " 'name': 'Find class in browser',\n",
      " 'parameters': [{'description': ' Class of element\\n', 'name': ' element'}],\n",
      " 'return': ' Element by classes\\n',\n",
      " 'snippet': '# Open the browser\\n'\n",
      "            'browser = Chrome()\\n'\n",
      "            '# Go to a website\\n'\n",
      "            \"browser.get('https://wikipedia.org')\\n\"\n",
      "            '# Find elements by class\\n'\n",
      "            \"elements = browser.by_classes('search-input')\\n\"}\n",
      "{'description': 'Find all elements with specified class and text on a webpage '\n",
      "                'in the the browser.',\n",
      " 'example': '>>> # Open the browser\\n'\n",
      "            '>>> browser = Chrome()\\n'\n",
      "            '>>> # Go to a website\\n'\n",
      "            \">>> browser.get('https://wikipedia.org')\\n\"\n",
      "            '>>> # Find elements by class and text\\n'\n",
      "            \">>> element = browser.by_class_and_by_text('search-input', \"\n",
      "            \"'Search Wikipedia')\\n\"\n",
      "            '>>> # We can now use this element, for example to click on\\n'\n",
      "            '>>> element.click()\\n',\n",
      " 'function_call': 'by_class_and_by_text(element, text)',\n",
      " 'icon': 'las la-times',\n",
      " 'keywords': ['browser',\n",
      "              'class',\n",
      "              'text',\n",
      "              'name classes',\n",
      "              'element',\n",
      "              'xml element by text',\n",
      "              'chrome',\n",
      "              'internet',\n",
      "              'browsing',\n",
      "              'browser',\n",
      "              'surfing',\n",
      "              'web',\n",
      "              'webscraping',\n",
      "              'www',\n",
      "              'selenium',\n",
      "              'crawling',\n",
      "              'webtesting',\n",
      "              'mozilla',\n",
      "              'firefox',\n",
      "              'internet explorer'],\n",
      " 'name': 'Find element in browser based on class and text',\n",
      " 'parameters': [{'description': ' Class of element\\n', 'name': ' element'}],\n",
      " 'return': ' Element by class and text\\n',\n",
      " 'snippet': '# Open the browser\\n'\n",
      "            'browser = Chrome()\\n'\n",
      "            '# Go to a website\\n'\n",
      "            \"browser.get('https://wikipedia.org')\\n\"\n",
      "            '# Find elements by class and text\\n'\n",
      "            \"element = browser.by_class_and_by_text('search-input', 'Search \"\n",
      "            \"Wikipedia')\\n\"\n",
      "            '# We can now use this element, for example to click on\\n'\n",
      "            'element.click()\\n'}\n",
      "{'description': 'Find element with specified id on a webpage in the the '\n",
      "                \"browser. Can also use native 'find_element_by_id' function\",\n",
      " 'example': '>>> # Open the browser\\n'\n",
      "            '>>> browser = Chrome()\\n'\n",
      "            '>>> # Go to a website\\n'\n",
      "            \">>> browser.get('https://wikipedia.org')\\n\"\n",
      "            '>>> # Find element by class\\n'\n",
      "            \">>> elements = browser.by_id('search-input')\\n\"\n",
      "            '>>> # We can now use this element, for example to click on\\n'\n",
      "            '>>> element.click()\\n',\n",
      " 'function_call': 'by_id(element)',\n",
      " 'icon': 'las la-times',\n",
      " 'keywords': ['browser',\n",
      "              'class',\n",
      "              'classes',\n",
      "              'element',\n",
      "              'xml element by text',\n",
      "              'chrome',\n",
      "              'internet',\n",
      "              'browsing',\n",
      "              'browser',\n",
      "              'surfing',\n",
      "              'web',\n",
      "              'webscraping',\n",
      "              'www',\n",
      "              'selenium',\n",
      "              'crawling',\n",
      "              'webtesting',\n",
      "              'mozilla',\n",
      "              'firefox',\n",
      "              'internet explorer'],\n",
      " 'name': 'Find id in browser',\n",
      " 'parameters': [{'description': ' Id of element\\n', 'name': ' element'}],\n",
      " 'return': ' Element by id\\n',\n",
      " 'snippet': '# Open the browser\\n'\n",
      "            'browser = Chrome()\\n'\n",
      "            '# Go to a website\\n'\n",
      "            \"browser.get('https://wikipedia.org')\\n\"\n",
      "            '# Find element by class\\n'\n",
      "            \"elements = browser.by_id('search-input')\\n\"\n",
      "            '# We can now use this element, for example to click on\\n'\n",
      "            'element.click()\\n'}\n",
      "{'description': 'Switch to an iframe in the browser',\n",
      " 'example': '>>> # Open the browser\\n'\n",
      "            '>>> browser = Chrome()\\n'\n",
      "            '>>> # Go to a website\\n'\n",
      "            '>>> '\n",
      "            \"browser.get('https://www.w3schools.com/html/html_iframe.asp')\\n\"\n",
      "            '>>> # Switch to iframe\\n'\n",
      "            '>>> browser.switch_to_iframe()\\n',\n",
      " 'function_call': 'switch_to_iframe(name=\"iframe\")',\n",
      " 'icon': 'las la-times',\n",
      " 'keywords': ['browser',\n",
      "              'class',\n",
      "              'classes',\n",
      "              'element',\n",
      "              'xml element by text',\n",
      "              'chrome',\n",
      "              'internet',\n",
      "              'browsing',\n",
      "              'browser',\n",
      "              'surfing',\n",
      "              'web',\n",
      "              'webscraping',\n",
      "              'www',\n",
      "              'selenium',\n",
      "              'crawling',\n",
      "              'webtesting',\n",
      "              'mozilla',\n",
      "              'firefox',\n",
      "              'internet explorer'],\n",
      " 'name': 'Switch to iframe in browser',\n",
      " 'parameters': [{'description': ' Name of the Iframe\\n', 'name': ' name'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open the browser\\n'\n",
      "            'browser = Chrome()\\n'\n",
      "            '# Go to a website\\n'\n",
      "            \"browser.get('https://www.w3schools.com/html/html_iframe.asp')\\n\"\n",
      "            '# Switch to iframe\\n'\n",
      "            'browser.switch_to_iframe()\\n'}\n",
      "{'description': 'Add a credential which stores credentials locally and '\n",
      "                'securely. All parameters should be Unicode text.',\n",
      " 'example': \">>> set_credential('SampleUsername', 'SamplePassword')\\n\",\n",
      " 'function_call': 'set_credential(username=None, password=None, '\n",
      "                  'system=\"Automagica\")',\n",
      " 'icon': 'las la-key',\n",
      " 'keywords': ['credential',\n",
      "              'login',\n",
      "              'password',\n",
      "              'username',\n",
      "              'store',\n",
      "              'vault',\n",
      "              'secure',\n",
      "              'credentials',\n",
      "              'store',\n",
      "              'log in',\n",
      "              'encrypt'],\n",
      " 'name': 'Set credential',\n",
      " 'parameters': [{'description': ' Username for which credential will be '\n",
      "                                'added.\\n',\n",
      "                 'name': ' username'},\n",
      "                {'description': ' Password to add\\n', 'name': ' password'},\n",
      "                {'description': ' Name of the system for which credentials are '\n",
      "                                'stored. Extra safety measure and method for '\n",
      "                                'keeping passwords for similar usernames on '\n",
      "                                'different applications a part. Highly '\n",
      "                                'recommended to change default value.\\n',\n",
      "                 'name': ' system'}],\n",
      " 'return': ' Stores credentials locally\\n',\n",
      " 'snippet': \"set_credential('SampleUsername', 'SamplePassword')\\n\"}\n",
      "{'description': 'Delete a locally stored credential. All parameters should be '\n",
      "                'Unicode text.',\n",
      " 'example': \">>> set_credential('SampleUsername', 'SamplePassword')\\n\"\n",
      "            \">>> delete_credential('SampleUsername', 'SamplePassword')\\n\",\n",
      " 'function_call': 'delete_credential(username=None, password=None, '\n",
      "                  'system=\"Automagica\")',\n",
      " 'icon': 'las la-key',\n",
      " 'keywords': ['credential',\n",
      "              'delete',\n",
      "              'login',\n",
      "              'password',\n",
      "              'username',\n",
      "              'store',\n",
      "              'vault',\n",
      "              'secure',\n",
      "              'credentials',\n",
      "              'store',\n",
      "              'log in',\n",
      "              'encrypt'],\n",
      " 'name': 'Delete credential',\n",
      " 'parameters': [{'description': ' Username for which credential (username + '\n",
      "                                'password) will be deleted.\\n',\n",
      "                 'name': ' username'},\n",
      "                {'description': ' Password to delete\\n', 'name': ' password'},\n",
      "                {'description': ' Name of the system for which password will '\n",
      "                                'be deleted. \\n',\n",
      "                 'name': ' system'}],\n",
      " 'return': '',\n",
      " 'snippet': \"set_credential('SampleUsername', 'SamplePassword')\\n\"\n",
      "            \"delete_credential('SampleUsername', 'SamplePassword')\\n\"}\n",
      "{'description': 'Get a locally stored redential. All parameters should be '\n",
      "                'Unicode text.',\n",
      " 'example': \">>> set_credential('SampleUsername', 'SamplePassword')\\n\"\n",
      "            \">>> get_credential('SampleUsername')\\n\"\n",
      "            \"'SamplePassword'\\n\",\n",
      " 'function_call': 'get_credential(username=None, system=\"Automagica\")',\n",
      " 'icon': 'las la-key',\n",
      " 'keywords': ['credential',\n",
      "              'get',\n",
      "              'delete',\n",
      "              'login',\n",
      "              'password',\n",
      "              'username',\n",
      "              'store',\n",
      "              'vault',\n",
      "              'secure',\n",
      "              'credentials',\n",
      "              'store',\n",
      "              'log in',\n",
      "              'encrypt'],\n",
      " 'name': 'Get credential',\n",
      " 'parameters': [{'description': ' Username to get password for.\\n',\n",
      "                 'name': ' username'},\n",
      "                {'description': ' Name of the system for which credentials are '\n",
      "                                'retreived.\\n',\n",
      "                 'name': ' system'}],\n",
      " 'return': ' Stored credential as string\\n',\n",
      " 'snippet': \"set_credential('SampleUsername', 'SamplePassword')\\n\"\n",
      "            \"get_credential('SampleUsername')\\n\"}\n",
      "{'description': 'Can be used to automate activites for FTP',\n",
      " 'example': '>>> # This example uses the Rebex FPT test server.\\n'\n",
      "            '>>> # Take caution uploading and downloading from this server as '\n",
      "            'it is public\\n'\n",
      "            \">>> ftp = FTP('test.rebex.net', 'demo', 'password')\\n\",\n",
      " 'function_call': 'FTP(server, username, password)',\n",
      " 'icon': 'las la-folder-open',\n",
      " 'keywords': ['FTP',\n",
      "              'file transfer protocol',\n",
      "              'filezilla',\n",
      "              'winscp',\n",
      "              'server',\n",
      "              'remote',\n",
      "              'folder',\n",
      "              'folders'],\n",
      " 'name': 'Create FTP connection (insecure)',\n",
      " 'parameters': [{'description': ' Name of the server\\n', 'name': ' server'},\n",
      "                {'description': ' Username \\n', 'name': ' username'},\n",
      "                {'description': ' Password\\n', 'name': ' password'}],\n",
      " 'return': '',\n",
      " 'snippet': '# This example uses the Rebex FPT test server.\\n'\n",
      "            '# Take caution uploading and downloading from this server as it '\n",
      "            'is public\\n'\n",
      "            \"ftp = FTP('test.rebex.net', 'demo', 'password')\\n\"}\n",
      "{'description': 'Downloads a file from FTP server. Connection needs to be '\n",
      "                'established first.',\n",
      " 'example': '>>> # This example uses the Rebex FPT test server.\\n'\n",
      "            '>>> # Take caution uploading and downloading from this server as '\n",
      "            'it is public\\n'\n",
      "            \">>> ftp = FTP('test.rebex.net', 'demo', 'password')\\n\"\n",
      "            \">>> # Download Rebex public file 'readme.txt'\\n\"\n",
      "            \">>> ftp.download_file('readme.txt')\\n\"\n",
      "            \"'C:\\\\\\\\Users\\\\\\\\<username>\\\\\\\\readme_downloaded.txt'\\n\",\n",
      " 'function_call': 'download_file(input_path, output_path=None)',\n",
      " 'icon': 'las la-download',\n",
      " 'keywords': ['FTP',\n",
      "              'file transfer protocol',\n",
      "              'download',\n",
      "              'filezilla',\n",
      "              'winscp',\n",
      "              'server',\n",
      "              'remote',\n",
      "              'folder',\n",
      "              'folders'],\n",
      " 'name': 'Download file',\n",
      " 'parameters': [{'description': ' Path to the file on the FPT server to '\n",
      "                                'download\\n',\n",
      "                 'name': ' input_path'},\n",
      "                {'description': ' Destination path for downloaded files. '\n",
      "                                'Default is the same directory with '\n",
      "                                '\"_downloaded\" added to the name\\n',\n",
      "                 'name': ' output_path'}],\n",
      " 'return': ' Path to output file as string \\n',\n",
      " 'snippet': '# This example uses the Rebex FPT test server.\\n'\n",
      "            '# Take caution uploading and downloading from this server as it '\n",
      "            'is public\\n'\n",
      "            \"ftp = FTP('test.rebex.net', 'demo', 'password')\\n\"\n",
      "            \"# Download Rebex public file 'readme.txt'\\n\"\n",
      "            \"ftp.download_file('readme.txt')\\n\"}\n",
      "{'description': 'Upload file to FTP server',\n",
      " 'example': '>>> # This example uses the Rebex FPT test server.\\n'\n",
      "            '>>> # Take caution uploading and downloading from this server as '\n",
      "            'it is public\\n'\n",
      "            \">>> ftp = FTP('test.rebex.net', 'demo', 'password')\\n\"\n",
      "            '>>> # Create a .txt file for illustration\\n'\n",
      "            '>>> text_file = make_text_file()\\n'\n",
      "            '>>> # Upload file to FTP test server\\n'\n",
      "            '>>> # Not that this might result in a persmission error for '\n",
      "            \"public FPT's\\n\"\n",
      "            '>>> ftp.upload_file(input_path = text_file)\\n',\n",
      " 'function_call': 'upload_file(input_path, output_path=None)',\n",
      " 'icon': 'las la-upload',\n",
      " 'keywords': ['FTP',\n",
      "              'upload',\n",
      "              'fptfile transfer protocol',\n",
      "              'filezilla',\n",
      "              'winscp',\n",
      "              'server',\n",
      "              'remote',\n",
      "              'folder',\n",
      "              'folders'],\n",
      " 'name': 'Upload file',\n",
      " 'parameters': [{'description': ' Path file that will be uploaded\\n',\n",
      "                 'name': ' input_path'},\n",
      "                {'description': ' Destination path to upload. \\n',\n",
      "                 'name': ' output_path'}],\n",
      " 'return': ' Path to uploaded file as string\\n',\n",
      " 'snippet': '# This example uses the Rebex FPT test server.\\n'\n",
      "            '# Take caution uploading and downloading from this server as it '\n",
      "            'is public\\n'\n",
      "            \"ftp = FTP('test.rebex.net', 'demo', 'password')\\n\"\n",
      "            '# Create a .txt file for illustration\\n'\n",
      "            'text_file = make_text_file()\\n'\n",
      "            '# Upload file to FTP test server\\n'\n",
      "            '# Not that this might result in a persmission error for public '\n",
      "            \"FPT's\\n\"\n",
      "            'ftp.upload_file(input_path = text_file)\\n'}\n",
      "{'description': 'Generate a list of all the files in the FTP directory',\n",
      " 'example': '>>> # This example uses the Rebex FPT test server.\\n'\n",
      "            '>>> # Take caution uploading and downloading from this server as '\n",
      "            'it is public\\n'\n",
      "            \">>> ftp = FTP('test.rebex.net', 'demo', 'password')\\n\"\n",
      "            '>>> # Show all files in main directory\\n'\n",
      "            '>>> ftp.enumerate_files()\\n'\n",
      "            '10-27-15  03:46PM       <DIR>          pub\\n'\n",
      "            '04-08-14  03:09PM                  403 readme.txt\\n'\n",
      "            \"'226 Transfer complete.'\\n\",\n",
      " 'function_call': 'enumerate_files(path=\"/\")',\n",
      " 'icon': 'las la-list-ol',\n",
      " 'keywords': ['FTP',\n",
      "              'list',\n",
      "              'upload',\n",
      "              'fptfile transfer protocol',\n",
      "              'filezilla',\n",
      "              'winscp',\n",
      "              'server',\n",
      "              'remote',\n",
      "              'folder',\n",
      "              'folders'],\n",
      " 'name': 'List FTP files',\n",
      " 'parameters': [{'description': ' Path to list files from. Default is the main '\n",
      "                                'directory\\n',\n",
      "                 'name': ' path'}],\n",
      " 'return': ' Prints list of all files and directories\\n',\n",
      " 'snippet': '# This example uses the Rebex FPT test server.\\n'\n",
      "            '# Take caution uploading and downloading from this server as it '\n",
      "            'is public\\n'\n",
      "            \"ftp = FTP('test.rebex.net', 'demo', 'password')\\n\"\n",
      "            '# Show all files in main directory\\n'\n",
      "            'ftp.enumerate_files()\\n'}\n",
      "{'description': 'Check if FTP directory exists',\n",
      " 'example': '>>> # This example uses the Rebex FPT test server.\\n'\n",
      "            '>>> # Take caution uploading and downloading from this server as '\n",
      "            'it is public\\n'\n",
      "            \">>> ftp = FTP('test.rebex.net', 'demo', 'password')\\n\"\n",
      "            \">>> # Check if 'pub' folder exists in main directory\\n\"\n",
      "            \">>> ftp.directory_exists('\\\\\\\\pub')\\n\"\n",
      "            'True\\n',\n",
      " 'function_call': 'directory_exists(path=\"/\")',\n",
      " 'icon': 'las la-list-ol',\n",
      " 'keywords': ['FTP',\n",
      "              'list',\n",
      "              'upload',\n",
      "              'fptfile transfer protocol',\n",
      "              'filezilla',\n",
      "              'winscp',\n",
      "              'server',\n",
      "              'remote',\n",
      "              'folder',\n",
      "              'folders'],\n",
      " 'name': 'Check FTP directory',\n",
      " 'parameters': [{'description': ' Path to check on existence. Default is main '\n",
      "                                'directory\\n',\n",
      "                 'name': ' path'}],\n",
      " 'return': ' Boolean\\n',\n",
      " 'snippet': '# This example uses the Rebex FPT test server.\\n'\n",
      "            '# Take caution uploading and downloading from this server as it '\n",
      "            'is public\\n'\n",
      "            \"ftp = FTP('test.rebex.net', 'demo', 'password')\\n\"\n",
      "            \"# Check if 'pub' folder exists in main directory\\n\"\n",
      "            \"ftp.directory_exists('\\\\\\\\pub')\\n\"}\n",
      "{'description': 'Create a FTP directory. Note that sufficient permissions are '\n",
      "                'present',\n",
      " 'example': '>>> # This example uses the Rebex FPT test server.\\n'\n",
      "            '>>> # Trying to create a directory will most likely fail due to '\n",
      "            'permission\\n'\n",
      "            \">>> ftp = FTP('test.rebex.net', 'demo', 'password')\\n\"\n",
      "            '>>> # Create directory\\n'\n",
      "            \">>> ftp.create_directory('brand_new_directory')      \\n\"\n",
      "            'False\\n',\n",
      " 'function_call': 'create_directory(directory_name, path=\"/\")',\n",
      " 'icon': 'las la-folder-plus',\n",
      " 'keywords': ['FTP',\n",
      "              'create',\n",
      "              'create folder',\n",
      "              'new',\n",
      "              'new folder',\n",
      "              'fptfile transfer protocol',\n",
      "              'filezilla',\n",
      "              'winscp',\n",
      "              'server',\n",
      "              'remote',\n",
      "              'folder',\n",
      "              'folders'],\n",
      " 'name': 'Create FTP directory',\n",
      " 'parameters': [{'description': ' Name of the new directory, should be a '\n",
      "                                \"string e.g. 'my_directory'\\n\",\n",
      "                 'name': ' directory_name'},\n",
      "                {'description': ' Path to parent directory where to make new '\n",
      "                                'directory. Default is main directory\\n',\n",
      "                 'name': ' path'}],\n",
      " 'return': ' Boolean if creation was succesful (True) or failed (False)\\n',\n",
      " 'snippet': '# This example uses the Rebex FPT test server.\\n'\n",
      "            '# Trying to create a directory will most likely fail due to '\n",
      "            'permission\\n'\n",
      "            \"ftp = FTP('test.rebex.net', 'demo', 'password')\\n\"\n",
      "            '# Create directory\\n'\n",
      "            \"ftp.create_directory('brand_new_directory')      \\n\"}\n",
      "{'description': 'Press and release an entered key. Make sure your keyboard is '\n",
      "                'on US layout (standard QWERTY).If you are using this on Mac '\n",
      "                'Os you might need to grant acces to your terminal '\n",
      "                'application. (Security Preferences > Security & Privacy > '\n",
      "                'Privacy > Accessibility)',\n",
      " 'example': '>>> # Open notepad to illustrate typing\\n'\n",
      "            \">>> run('notepad.exe')\\n\"\n",
      "            '>>> # Press some keys\\n'\n",
      "            \">>> press_key('a')\\n\"\n",
      "            \">>> press_key('enter')\\n\"\n",
      "            \">>> press_key('b')\\n\"\n",
      "            \">>> press_key('enter')\\n\"\n",
      "            \">>> press_key('c')\\n\",\n",
      " 'function_call': 'press_key(key=None, delay=1, perform_n_times=1, '\n",
      "                  'delay_between=0.5)',\n",
      " 'icon': 'las la-keyboard',\n",
      " 'keywords': ['keyboard',\n",
      "              'typing',\n",
      "              'type',\n",
      "              'key',\n",
      "              'keystroke',\n",
      "              'hotkey',\n",
      "              'press',\n",
      "              'press key'],\n",
      " 'name': 'Press key',\n",
      " 'parameters': [{'description': ' Key to press. This can also be a scan code '\n",
      "                                \"(e.g: 33 for '!')\\n\",\n",
      "                 'name': ' key'},\n",
      "                {'description': ' Delay before key is pressed in seconds, '\n",
      "                                'default is 1 second\\n',\n",
      "                 'name': ' delay'},\n",
      "                {'description': ' How many times to perform the key press\\n',\n",
      "                 'name': ' perform_n_times'},\n",
      "                {'description': ' Delay between key presses\\n',\n",
      "                 'name': ' delay_between'}],\n",
      " 'return': ' Keypress\\n',\n",
      " 'snippet': '# Open notepad to illustrate typing\\n'\n",
      "            \"run('notepad.exe')\\n\"\n",
      "            '# Press some keys\\n'\n",
      "            \"press_key('a')\\n\"\n",
      "            \"press_key('enter')\\n\"\n",
      "            \"press_key('b')\\n\"\n",
      "            \"press_key('enter')\\n\"\n",
      "            \"press_key('c')\\n\"}\n",
      "{'description': 'Press a combination of two or three keys simultaneously. Make '\n",
      "                'sure your keyboard is on US layout (standard QWERTY).',\n",
      " 'example': '>>> # Open notepad to illustrate typing\\n'\n",
      "            \">>> run('notepad.exe')\\n\"\n",
      "            \">>> # Press 'ctrl + s' to prompt save window \\n\"\n",
      "            \">>> press_key_combination('ctrl', 's')\\n\",\n",
      " 'function_call': 'press_key_combination(first_key, second_key, '\n",
      "                  'third_key=None, compatibility=False, delay=1)',\n",
      " 'icon': 'las la-keyboard',\n",
      " 'keywords': ['keyboard',\n",
      "              'key combination',\n",
      "              'shortcut',\n",
      "              'typing',\n",
      "              'type',\n",
      "              'key',\n",
      "              'keystroke',\n",
      "              'hotkey',\n",
      "              'press',\n",
      "              'press key'],\n",
      " 'name': 'Press key combination',\n",
      " 'parameters': [{'description': ' First key to press\\n', 'name': ' first_key'},\n",
      "                {'description': ' Second key to press\\n',\n",
      "                 'name': ' second_key'},\n",
      "                {'description': ' Third key to press, this is optional.\\n',\n",
      "                 'name': ' third_key'},\n",
      "                {'description': ' Set parameter to true to not use win32com. '\n",
      "                                'This could help with compatibility on certain '\n",
      "                                'systems or when certain keypresses do not '\n",
      "                                'work correctly.\\n',\n",
      "                 'name': ' compatibility'},\n",
      "                {'description': ' Delay before keys are pressed in seconds, '\n",
      "                                'default is 1 second\\n',\n",
      "                 'name': ' key'}],\n",
      " 'return': ' Key combination\\n',\n",
      " 'snippet': '# Open notepad to illustrate typing\\n'\n",
      "            \"run('notepad.exe')\\n\"\n",
      "            \"# Press 'ctrl + s' to prompt save window \\n\"\n",
      "            \"press_key_combination('ctrl', 's')\\n\"}\n",
      "{'description': 'Simulate keystrokes. If an element ID is specified, text will '\n",
      "                'be typed in a specific field or element based on the element '\n",
      "                'ID (vision) by the recorder.',\n",
      " 'example': '>>> # Open notepad to illustrate typing\\n'\n",
      "            \">>> run('notepad.exe')\\n\"\n",
      "            '>>> # Type a story\\n'\n",
      "            \">>> typing('Why was the robot mad? \\\\n They kept pushing his \"\n",
      "            \"buttons!')\\n\",\n",
      " 'function_call': 'typing(text, automagica_id=None, clear=False, '\n",
      "                  'interval_seconds=0.01, delay=1)',\n",
      " 'icon': 'las la-keyboard',\n",
      " 'keywords': ['keyboard',\n",
      "              'keystrokes',\n",
      "              'key combination',\n",
      "              'shortcut',\n",
      "              'typing',\n",
      "              'type',\n",
      "              'key',\n",
      "              'keystroke',\n",
      "              'hotkey',\n",
      "              'press',\n",
      "              'press key',\n",
      "              'send keys',\n",
      "              'keystrokes'],\n",
      " 'name': 'Type text',\n",
      " 'parameters': [{'description': ' Text in string format to type. Note that you '\n",
      "                                'can only press single character keys. Special '\n",
      "                                'keys can not be part of the text argument.\\n',\n",
      "                 'name': ' text'},\n",
      "                {'description': ' ID of the element. To define an element and '\n",
      "                                'attach an ID one can use the Automagica Wand. '\n",
      "                                'The recorder uses vision to detect an element '\n",
      "                                'and can be invoked with the recorder() '\n",
      "                                'function.\\n',\n",
      "                 'name': ' automagica_id'},\n",
      "                {'description': ' Attempts to clear the element before typing '\n",
      "                                'using hotkeys. Be cautious when using this '\n",
      "                                'method as a vision mismatch could result in '\n",
      "                                'deleting unwanted data. Default value is '\n",
      "                                'False\\n',\n",
      "                 'name': ' clear'},\n",
      "                {'description': ' Time in seconds between two keystrokes. '\n",
      "                                'Defautl value is 0.01 seconds.\\n',\n",
      "                 'name': ' interval_seconds'},\n",
      "                {'description': ' Delay before beginning to type, default is 1 '\n",
      "                                'second\\n',\n",
      "                 'name': ' delay'}],\n",
      " 'return': ' Keystrokes\\n',\n",
      " 'snippet': '# Open notepad to illustrate typing\\n'\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            \"run('notepad.exe')\\n\"\n",
      "            '# Type a story\\n'\n",
      "            \"typing('Why was the robot mad? \\\\n They kept pushing his \"\n",
      "            \"buttons!')\\n\"}\n",
      "{'description': 'Get the x and y pixel coordinates of current mouse '\n",
      "                'position.These coordinates represent the absolute pixel '\n",
      "                'position of the mouse on the computer screen. The '\n",
      "                'x-coördinate starts on the left side and increases going '\n",
      "                'right. The y-coördinate increases going down.',\n",
      " 'example': '>>> get_mouse_position()\\n(314, 271)\\n',\n",
      " 'function_call': 'get_mouse_position(delay=None, to_clipboard=False)',\n",
      " 'icon': 'las la-mouse',\n",
      " 'keywords': ['mouse',\n",
      "              'mouse automation',\n",
      "              'click',\n",
      "              'right click',\n",
      "              'mouse button',\n",
      "              'move mouse',\n",
      "              'position',\n",
      "              'pixel'],\n",
      " 'name': 'Get mouse coordinates',\n",
      " 'parameters': [{'description': ' Delay in seconds before capturing mouse '\n",
      "                                'position.\\n',\n",
      "                 'name': ' delay'},\n",
      "                {'description': ' Put the coordinates in the clipboard e.g. '\n",
      "                                \"'x=1, y=1'\\n\",\n",
      "                 'name': ' to_clipboard'}],\n",
      " 'return': ' Tuple with (x, y) coordinates\\n',\n",
      " 'snippet': 'get_mouse_position()\\n'}\n",
      "{'description': 'Displays mouse position in an overlay. Refreshes every two '\n",
      "                'seconds. Can be used to find mouse position of element on the '\n",
      "                'screen.These coordinates represent the absolute pixel '\n",
      "                'position of the mouse on the computer screen. The '\n",
      "                'x-coördinate starts on the left side and increases going '\n",
      "                'right. The y-coördinate increases going down.',\n",
      " 'example': '>>> display_mouse_position()\\n',\n",
      " 'function_call': 'display_mouse_position(duration=10)',\n",
      " 'icon': 'lars la-search-location',\n",
      " 'keywords': ['mouse',\n",
      "              'osd',\n",
      "              'overlay',\n",
      "              'show',\n",
      "              'display',\n",
      "              'mouse automation',\n",
      "              'click',\n",
      "              'right click',\n",
      "              'mouse button',\n",
      "              'move mouse',\n",
      "              'position',\n",
      "              'pixel'],\n",
      " 'name': 'Display mouse position',\n",
      " 'parameters': [{'description': ' Duration to show overlay.\\n',\n",
      "                 'name': ' duration'}],\n",
      " 'return': ' Overlay with (x, y) coordinates\\n',\n",
      " 'snippet': 'display_mouse_position()\\n'}\n",
      "{'description': 'Clicks on an element based on the element ID (vision)',\n",
      " 'example': '>>> # Click on a vision element, use the recorder() function to '\n",
      "            'define elements\\n'\n",
      "            '>>> # Run the Windows calculator and try to perform the activity\\n'\n",
      "            \">>> run('calc.exe')\\n\"\n",
      "            '>>> # Use the element ID found by the recorder, in this case ID '\n",
      "            \"'qf41'. You can also view this on automagica.id/qf41 \\n\"\n",
      "            '>>> #  If you have a vastly different version or layout the '\n",
      "            'element might not be found, use the recorder \\n'\n",
      "            \">>> click('qf41')\\n\",\n",
      " 'function_call': 'click(automagica_id, delay=1)',\n",
      " 'icon': 'las la-mouse-pointer',\n",
      " 'keywords': ['mouse',\n",
      "              'vision',\n",
      "              'mouse',\n",
      "              'osd',\n",
      "              'overlay',\n",
      "              'show',\n",
      "              'display',\n",
      "              'mouse automation',\n",
      "              'click',\n",
      "              'right click',\n",
      "              'mouse button',\n",
      "              'move mouse',\n",
      "              'position',\n",
      "              'pixel'],\n",
      " 'name': 'Mouse click',\n",
      " 'parameters': [{'description': ' ID of the element. To define an element and '\n",
      "                                'attach an ID one can use the Automagica Wand. '\n",
      "                                'The recorder uses vision to detect an element '\n",
      "                                'and can be invoked with the recorder() '\n",
      "                                'function.\\n',\n",
      "                 'name': ' automagica_id'},\n",
      "                {'description': ' Delay before clicking in seconds. \\n',\n",
      "                 'name': ' delay'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Click on a vision element, use the recorder() function to '\n",
      "            'define elements\\n'\n",
      "            '# Run the Windows calculator and try to perform the activity\\n'\n",
      "            \"run('calc.exe')\\n\"\n",
      "            '# Use the element ID found by the recorder, in this case ID '\n",
      "            \"'qf41'. You can also view this on automagica.id/qf41 \\n\"\n",
      "            '#  If you have a vastly different version or layout the element '\n",
      "            'might not be found, use the recorder \\n'\n",
      "            \"click('qf41')\\n\"}\n",
      "{'description': 'Clicks on an element based on pixel position determined by x '\n",
      "                'and y coordinates. To find coordinates one could use '\n",
      "                'display_mouse_position().',\n",
      " 'example': '>>> # Click on pixel position\\n'\n",
      "            '>>> click_coordinates(x=100, y=100)\\n',\n",
      " 'function_call': 'click_coordinates(x=None, y=None, delay=1)',\n",
      " 'icon': 'las la-mouse-pointer',\n",
      " 'keywords': ['mouse',\n",
      "              'vision',\n",
      "              'mouse',\n",
      "              'osd',\n",
      "              'overlay',\n",
      "              'show',\n",
      "              'display',\n",
      "              'mouse automation',\n",
      "              'click',\n",
      "              'right click',\n",
      "              'mouse button',\n",
      "              'move mouse',\n",
      "              'position',\n",
      "              'pixel'],\n",
      " 'name': 'Mouse click coordinates',\n",
      " 'parameters': [{'description': ' X-coordinate\\n', 'name': ' x'},\n",
      "                {'description': ' Y-coordinate\\n', 'name': ' y'},\n",
      "                {'description': ' Delay before clicking in seconds. \\n',\n",
      "                 'name': ' delay'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Click on pixel position\\nclick_coordinates(x=100, y=100)\\n'}\n",
      "{'description': 'Double clicks on a pixel position determined by x and y '\n",
      "                'coordinates.',\n",
      " 'example': '>>> # Click on coordinates\\n'\n",
      "            '>>> double_click_coordinates(x=100, y=100)\\n',\n",
      " 'function_call': 'double_click_coordinates(x=None, y=None, delay=1)',\n",
      " 'icon': 'las la-mouse-pointer',\n",
      " 'keywords': ['mouse',\n",
      "              'osd',\n",
      "              'overlay',\n",
      "              'double',\n",
      "              'double click',\n",
      "              'doubleclick show',\n",
      "              'display',\n",
      "              'mouse automation',\n",
      "              'click',\n",
      "              'right click',\n",
      "              'mouse button',\n",
      "              'move mouse',\n",
      "              'position',\n",
      "              'pixel'],\n",
      " 'name': 'Double mouse click coordinates',\n",
      " 'parameters': [{'description': ' X-coordinate\\n', 'name': ' x'},\n",
      "                {'description': ' Y-coordinate\\n', 'name': ' y'},\n",
      "                {'description': ' Delay before cliking in seconds. \\n',\n",
      "                 'name': ' delay'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Click on coordinates\\ndouble_click_coordinates(x=100, y=100)\\n'}\n",
      "{'description': 'Double clicks on an element based on the element ID (vision)',\n",
      " 'example': '>>> # Click on a vision element, use the recorder() function to '\n",
      "            'define elements\\n'\n",
      "            '>>> # Run the Windows calculator and try to perform the activity\\n'\n",
      "            \">>> run('calc.exe')\\n\"\n",
      "            '>>> # Use the element ID found by the recorder, in this case ID '\n",
      "            \"'qf41'. You can also view this on automagica.id/qf41 \\n\"\n",
      "            '>>> #  If you have a vastly different version or layout the '\n",
      "            'element might not be found, use the recorder \\n'\n",
      "            \">>> double_click('qf41')\\n\",\n",
      " 'function_call': 'double_click(automagica_id=None, delay=1)',\n",
      " 'icon': 'las la-mouse-pointer',\n",
      " 'keywords': ['mouse',\n",
      "              'osd',\n",
      "              'overlay',\n",
      "              'double',\n",
      "              'double click',\n",
      "              'doubleclick show',\n",
      "              'display',\n",
      "              'mouse automation',\n",
      "              'click',\n",
      "              'right click',\n",
      "              'mouse button',\n",
      "              'move mouse',\n",
      "              'position',\n",
      "              'pixel'],\n",
      " 'name': 'Double mouse click',\n",
      " 'parameters': [{'description': ' ID of the element. To define an element and '\n",
      "                                'attach an ID one can use the Automagica Wand. '\n",
      "                                'The recorder uses vision to detect an element '\n",
      "                                'and can be invoked with the recorder() '\n",
      "                                'function.\\n',\n",
      "                 'name': ' automagica_id'},\n",
      "                {'description': ' Delay before clicking in seconds. \\n',\n",
      "                 'name': ' delay'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Click on a vision element, use the recorder() function to '\n",
      "            'define elements\\n'\n",
      "            '# Run the Windows calculator and try to perform the activity\\n'\n",
      "            \"run('calc.exe')\\n\"\n",
      "            '# Use the element ID found by the recorder, in this case ID '\n",
      "            \"'qf41'. You can also view this on automagica.id/qf41 \\n\"\n",
      "            '#  If you have a vastly different version or layout the element '\n",
      "            'might not be found, use the recorder \\n'\n",
      "            \"double_click('qf41')\\n\"}\n",
      "{'description': 'Right clicks on an element based on the element ID (vision)',\n",
      " 'example': '>>> # Click on a vision element, use the recorder() function to '\n",
      "            'define elements\\n'\n",
      "            '>>> # Run the Windows calculator and try to perform the activity\\n'\n",
      "            \">>> run('calc.exe')\\n\"\n",
      "            '>>> # Use the element ID found by the recorder, in this case ID '\n",
      "            \"'qf41'. You can also view this on automagica.id/qf41 \\n\"\n",
      "            '>>> #  If you have a vastly different version or layout the '\n",
      "            'element might not be found, use the recorder \\n'\n",
      "            \">>> right_click('qf41')\\n\",\n",
      " 'function_call': 'right_click(automagica_id=None, delay=1)',\n",
      " 'icon': 'las la-mouse-pointer',\n",
      " 'keywords': ['mouse',\n",
      "              'osd',\n",
      "              'right click',\n",
      "              'right',\n",
      "              'rightclick',\n",
      "              'overlay',\n",
      "              'show',\n",
      "              'display',\n",
      "              'mouse automation',\n",
      "              'click',\n",
      "              'right click',\n",
      "              'mouse button',\n",
      "              'move mouse',\n",
      "              'position',\n",
      "              'pixel'],\n",
      " 'name': 'Right click',\n",
      " 'parameters': [{'description': ' ID of the element. To define an element and '\n",
      "                                'attach an ID one can use the Automagica Wand. '\n",
      "                                'The recorder uses vision to detect an element '\n",
      "                                'and can be invoked with the recorder() '\n",
      "                                'function.\\n',\n",
      "                 'name': ' automagica_id'},\n",
      "                {'description': ' Delay before cliking in seconds. \\n',\n",
      "                 'name': ' delay'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Click on a vision element, use the recorder() function to '\n",
      "            'define elements\\n'\n",
      "            '# Run the Windows calculator and try to perform the activity\\n'\n",
      "            \"run('calc.exe')\\n\"\n",
      "            '# Use the element ID found by the recorder, in this case ID '\n",
      "            \"'qf41'. You can also view this on automagica.id/qf41 \\n\"\n",
      "            '#  If you have a vastly different version or layout the element '\n",
      "            'might not be found, use the recorder \\n'\n",
      "            \"right_click('qf41')\\n\"}\n",
      "{'description': 'Right clicks on an element based pixel position determined by '\n",
      "                'x and y coordinates.',\n",
      " 'example': '>>> # Right click on coordinates\\n'\n",
      "            '>>> right_click_coordinates(x=100, y=100)\\n',\n",
      " 'function_call': 'right_click_coordinates(x=None, y=None, delay=1)',\n",
      " 'icon': 'las la-mouse-pointer',\n",
      " 'keywords': ['mouse',\n",
      "              'osd',\n",
      "              'right click',\n",
      "              'right',\n",
      "              'rightclick',\n",
      "              'overlay',\n",
      "              'show',\n",
      "              'display',\n",
      "              'mouse automation',\n",
      "              'click',\n",
      "              'right click',\n",
      "              'mouse button',\n",
      "              'move mouse',\n",
      "              'position',\n",
      "              'pixel'],\n",
      " 'name': 'Right click coordinates',\n",
      " 'parameters': [{'description': ' X-coördinate\\n', 'name': ' x'},\n",
      "                {'description': ' Y-coördinate\\n', 'name': ' y'},\n",
      "                {'description': ' Delay before clicking in seconds \\n',\n",
      "                 'name': ' delay'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Right click on coordinates\\n'\n",
      "            'right_click_coordinates(x=100, y=100)\\n'}\n",
      "{'description': 'Moves te pointer to an element based on the element ID '\n",
      "                '(vision)',\n",
      " 'example': '>>> # Use recorder to find an element ID\\n'\n",
      "            '>>> # Run the Windows calculator and try to perform the activity\\n'\n",
      "            \">>> run('calc.exe')\\n\"\n",
      "            '>>> # Use the element ID found by the recorder, in this case ID '\n",
      "            \"'qf41'. You can also view this on automagica.id/qf41 \\n\"\n",
      "            '>>> #  If you have a vastly different version or layout the '\n",
      "            'element might not be found, use the recorder \\n'\n",
      "            \">>> move_mouse_to('qf41')\\n\",\n",
      " 'function_call': 'move_mouse_to(automagica_id=None, delay=1)',\n",
      " 'icon': 'las la-arrows-alt',\n",
      " 'keywords': ['mouse',\n",
      "              'osd',\n",
      "              'move mouse',\n",
      "              'right click',\n",
      "              'right',\n",
      "              'rightclick',\n",
      "              'overlay',\n",
      "              'show',\n",
      "              'display',\n",
      "              'mouse automation',\n",
      "              'click',\n",
      "              'right click',\n",
      "              'mouse button',\n",
      "              'move mouse',\n",
      "              'position',\n",
      "              'pixel'],\n",
      " 'name': 'Move mouse',\n",
      " 'parameters': [{'description': ' ID of the element. To define an element and '\n",
      "                                'attach an ID one can use the Automagica Wand. '\n",
      "                                'The recorder uses vision to detect an element '\n",
      "                                'and can be invoked with the recorder() '\n",
      "                                'function.\\n',\n",
      "                 'name': ' automagica_id'},\n",
      "                {'description': ' Delay before movement in seconds \\n',\n",
      "                 'name': ' delay'}],\n",
      " 'return': ' Move mouse to (x, y) coordinates\\n',\n",
      " 'snippet': '# Use recorder to find an element ID\\n'\n",
      "            '# Run the Windows calculator and try to perform the activity\\n'\n",
      "            \"run('calc.exe')\\n\"\n",
      "            '# Use the element ID found by the recorder, in this case ID '\n",
      "            \"'qf41'. You can also view this on automagica.id/qf41 \\n\"\n",
      "            '#  If you have a vastly different version or layout the element '\n",
      "            'might not be found, use the recorder \\n'\n",
      "            \"move_mouse_to('qf41')\\n\"}\n",
      "{'description': 'Moves te pointer to an element based on the pixel position '\n",
      "                'determined by x and y coordinates',\n",
      " 'example': '>>> # Move mouse to coordinates\\n'\n",
      "            '>>> move_mouse_to_coordinates(x=100, y=100)\\n',\n",
      " 'function_call': 'move_mouse_to_coordinates(x=None, y=None, delay=1)',\n",
      " 'icon': 'las la-arrows-alt',\n",
      " 'keywords': ['mouse',\n",
      "              'osd',\n",
      "              'move mouse',\n",
      "              'right click',\n",
      "              'right',\n",
      "              'rightclick',\n",
      "              'overlay',\n",
      "              'show',\n",
      "              'display',\n",
      "              'mouse automation',\n",
      "              'click',\n",
      "              'right click',\n",
      "              'mouse button',\n",
      "              'move mouse',\n",
      "              'position',\n",
      "              'pixel'],\n",
      " 'name': 'Move mouse coordinates',\n",
      " 'parameters': [{'description': ' X-coördinate\\n', 'name': ' x'},\n",
      "                {'description': ' Y-coördinate\\n', 'name': ' y'},\n",
      "                {'description': ' Delay between movements in seconds, standard '\n",
      "                                'value is 1s. \\n',\n",
      "                 'name': ' delay'}],\n",
      " 'return': ' Move mouse to (x, y) coordinates\\n',\n",
      " 'snippet': '# Move mouse to coordinates\\n'\n",
      "            'move_mouse_to_coordinates(x=100, y=100)\\n'}\n",
      "{'description': 'Moves the mouse an x- and y- distance relative to its current '\n",
      "                'pixel position.',\n",
      " 'example': '>>> move_mouse_to_coordinates(x=100, y=100)\\n'\n",
      "            '>>> wait(1)\\n'\n",
      "            '>>> move_mouse_relative(x=10, y=10)\\n',\n",
      " 'function_call': 'move_mouse_relative(x=None, y=None)',\n",
      " 'icon': 'las la-arrows-alt',\n",
      " 'keywords': ['mouse',\n",
      "              'osd',\n",
      "              'move mouse',\n",
      "              'right click',\n",
      "              'right',\n",
      "              'rightclick',\n",
      "              'overlay',\n",
      "              'show',\n",
      "              'display',\n",
      "              'mouse automation',\n",
      "              'click',\n",
      "              'right click',\n",
      "              'mouse button',\n",
      "              'move mouse',\n",
      "              'position',\n",
      "              'pixel'],\n",
      " 'name': 'Move mouse relative',\n",
      " 'parameters': [{'description': ' X-coördinate\\n', 'name': ' x'},\n",
      "                {'description': ' Y-coördinate\\n', 'name': ' y'}],\n",
      " 'return': ' Move mouse (x, y) coordinates\\n',\n",
      " 'snippet': 'move_mouse_to_coordinates(x=100, y=100)\\n'\n",
      "            'wait(1)\\n'\n",
      "            'move_mouse_relative(x=10, y=10)\\n'}\n",
      "{'description': 'Drags mouse to an element based on pixel position determined '\n",
      "                'by x and y coordinates',\n",
      " 'example': '>>> # Use coordinates to move and drag mouse\\n'\n",
      "            '>>> move_mouse_to_coordinates(x=100, y=100)\\n'\n",
      "            '>>> drag_mouse_to_coordinates(x=1, y=1)\\n',\n",
      " 'function_call': 'drag_mouse_to_coordinates(x=None, y=None, delay=1)',\n",
      " 'icon': 'las la-arrows-alt',\n",
      " 'keywords': ['mouse',\n",
      "              'osd',\n",
      "              'move mouse',\n",
      "              'right click',\n",
      "              'right',\n",
      "              'rightclick',\n",
      "              'overlay',\n",
      "              'show',\n",
      "              'display',\n",
      "              'mouse automation',\n",
      "              'click',\n",
      "              'right click',\n",
      "              'mouse button',\n",
      "              'move mouse',\n",
      "              'position',\n",
      "              'pixel'],\n",
      " 'name': 'Drag mouse',\n",
      " 'parameters': [{'description': ' X-coördinate\\n', 'name': ' x'},\n",
      "                {'description': ' Y-coördinate\\n', 'name': ' y'},\n",
      "                {'description': ' Delay between movements in seconds, standard '\n",
      "                                'value is 1s. \\n',\n",
      "                 'name': ' delay'}],\n",
      " 'return': ' Drag mouse \\n',\n",
      " 'snippet': '# Use coordinates to move and drag mouse\\n'\n",
      "            'move_mouse_to_coordinates(x=100, y=100)\\n'\n",
      "            'drag_mouse_to_coordinates(x=1, y=1)\\n'}\n",
      "{'description': 'Drags mouse to an element based on the element ID (vision)',\n",
      " 'example': '>>> # Use recorder to find an element ID\\n'\n",
      "            '>>> # Run the Windows calculator and try to perform the activity\\n'\n",
      "            \">>> run('calc.exe')\\n\"\n",
      "            '>>> # Use the element ID found by the recorder, in this case ID '\n",
      "            \"'qf41'. You can also view this on automagica.id/qf41 \\n\"\n",
      "            '>>> #  If you have a vastly different version or layout the '\n",
      "            'element might not be found, use the recorder \\n'\n",
      "            \">>> drag_mouse_to('qf41')\\n\",\n",
      " 'function_call': 'drag_mouse_to(automagica_id=None, delay=1)',\n",
      " 'icon': 'las la-arrows-alt',\n",
      " 'keywords': ['mouse',\n",
      "              'osd',\n",
      "              'move mouse',\n",
      "              'right click',\n",
      "              'right',\n",
      "              'rightclick',\n",
      "              'overlay',\n",
      "              'show',\n",
      "              'display',\n",
      "              'mouse automation',\n",
      "              'click',\n",
      "              'right click',\n",
      "              'mouse button',\n",
      "              'move mouse',\n",
      "              'position',\n",
      "              'pixel'],\n",
      " 'name': 'Drag mouse',\n",
      " 'parameters': [{'description': ' ID of the element. To define an element and '\n",
      "                                'attach an ID one can use the Automagica Wand. '\n",
      "                                'The recorder uses vision to detect an element '\n",
      "                                'and can be invoked with the recorder() '\n",
      "                                'function.\\n',\n",
      "                 'name': ' automagica_id'},\n",
      "                {'description': ' Delay before movement in seconds.\\n',\n",
      "                 'name': ' delay'}],\n",
      " 'return': ' Drag mouse \\n',\n",
      " 'snippet': '# Use recorder to find an element ID\\n'\n",
      "            '# Run the Windows calculator and try to perform the activity\\n'\n",
      "            \"run('calc.exe')\\n\"\n",
      "            '# Use the element ID found by the recorder, in this case ID '\n",
      "            \"'qf41'. You can also view this on automagica.id/qf41 \\n\"\n",
      "            '#  If you have a vastly different version or layout the element '\n",
      "            'might not be found, use the recorder \\n'\n",
      "            \"drag_mouse_to('qf41')\\n\"}\n",
      "{'description': 'Take a random square snippet from the current screen. Mainly '\n",
      "                'for testing and/or development purposes.',\n",
      " 'example': '>>> random_screen_snippet()\\n'\n",
      "            \"'C:\\\\\\\\Users\\\\\\\\<username>\\\\\\\\random_screensnippet.jpg'\\n\",\n",
      " 'function_call': 'random_screen_snippet(size=100, output_path=None)',\n",
      " 'icon': 'las la-crop-alt',\n",
      " 'keywords': ['image', 'random', 'testing', 'screengrab', 'snippet'],\n",
      " 'name': 'Random screen snippet',\n",
      " 'parameters': [{'description': ' Size (width and height) in pixels for square '\n",
      "                                'snippet. Default value is 100 pixels\\n',\n",
      "                 'name': ' size'},\n",
      "                {'description': ' Path where snippet will be saved. Default '\n",
      "                                'value is home directory with name '\n",
      "                                \"'random_screensnippet.jpg'\\n\",\n",
      "                 'name': ' output_path'}],\n",
      " 'return': ' Path to snippet\\n',\n",
      " 'snippet': 'random_screen_snippet()\\n'}\n",
      "{'description': 'Take a screenshot of current screen.',\n",
      " 'example': '>>> new_screenshot = take_screenshot()\\n'\n",
      "            '>>> open_file(new_screenshot)\\n'\n",
      "            \"'C:\\\\\\\\Users\\\\\\\\<username>\\\\\\\\screenshot.jpg'\\n\",\n",
      " 'function_call': 'take_screenshot(output_path=None)',\n",
      " 'icon': 'las la-expand',\n",
      " 'keywords': ['image', 'screenshot', 'printscreen,'],\n",
      " 'name': 'Screenshot',\n",
      " 'parameters': [{'description': ' Path to save screenshot. Default value is '\n",
      "                                \"home directory with name 'screenshot.jpg'.\\n\",\n",
      "                 'name': ' output_path'}],\n",
      " 'return': ' Path to save screenshot\\n',\n",
      " 'snippet': 'new_screenshot = take_screenshot()\\nopen_file(new_screenshot)\\n'}\n",
      "{'description': 'List all files in a folder (and subfolders)Checks all folders '\n",
      "                'and subfolders for files. This could take some time for large '\n",
      "                'repositories.',\n",
      " 'example': '>>> # List all files in the homedirectory\\n'\n",
      "            '>>> get_files_in_folder()\\n'\n",
      "            \"['C:\\\\\\\\Users\\\\\\\\<username>\\\\\\\\file1.jpg', \"\n",
      "            \"'C:\\\\\\\\Users\\\\\\\\<username>\\\\\\\\file2.txt', ... ]\\n\",\n",
      " 'function_call': 'get_files_in_folder(input_path=None, extension=None, '\n",
      "                  'show_full_path=True, scan_subfolders=False)',\n",
      " 'icon': 'las la-search',\n",
      " 'keywords': ['folder',\n",
      "              'files',\n",
      "              'explorer',\n",
      "              'nautilus',\n",
      "              'folder',\n",
      "              'file',\n",
      "              'create folder',\n",
      "              'get files',\n",
      "              'list files',\n",
      "              'all files',\n",
      "              'overview',\n",
      "              'get files'],\n",
      " 'name': 'List files in folder',\n",
      " 'parameters': [{'description': ' Path of the folder to retreive files from. '\n",
      "                                'Default folder is the home directory.\\n',\n",
      "                 'name': ' input_path'},\n",
      "                {'description': ' Optional filter on certain extensions, for '\n",
      "                                \"example 'pptx', 'exe,' xlsx', 'txt', .. \"\n",
      "                                'Default value is no filter.\\n',\n",
      "                 'name': ' extension'},\n",
      "                {'description': ' Set this to True to show full path, False '\n",
      "                                'will only show file or dirname. Default is '\n",
      "                                'True\\n',\n",
      "                 'name': ' show_full_path'}],\n",
      " 'return': ' List of files with their full path\\n',\n",
      " 'snippet': '# List all files in the homedirectory\\nget_files_in_folder()\\n'}\n",
      "{'description': 'Creates new folder at the given path.',\n",
      " 'example': '>>> # Create folder in the home directory\\n'\n",
      "            '>>> create_folder()\\n'\n",
      "            \"'C:\\\\\\\\Users\\\\\\\\<username>\\\\\\\\new_folder'\\n\",\n",
      " 'function_call': 'create_folder(path=None)',\n",
      " 'icon': 'las la-folder-plus',\n",
      " 'keywords': ['create folder',\n",
      "              'folder',\n",
      "              'new folder',\n",
      "              ' folders',\n",
      "              'make folder',\n",
      "              'new folder',\n",
      "              'folder manipulation',\n",
      "              'explorer',\n",
      "              'nautilus'],\n",
      " 'name': 'Create folder',\n",
      " 'parameters': [{'description': ' Full path of folder that will be created. If '\n",
      "                                'no path is specified a folder called '\n",
      "                                \"'new_folder' will be made in home directory. \"\n",
      "                                'If this folder already exists 8 random '\n",
      "                                'characters will be added to the name.\\n',\n",
      "                 'name': ' path'}],\n",
      " 'return': ' Path to new folder as string\\n',\n",
      " 'snippet': '# Create folder in the home directory\\ncreate_folder()\\n'}\n",
      "{'description': 'Rename a folder',\n",
      " 'example': '>>> # Make new folder in home directory for illustration\\n'\n",
      "            '>>> testfolder = create_folder()\\n'\n",
      "            '>>> # Rename the folder\\n'\n",
      "            '>>> rename_folder(testfolder, '\n",
      "            \"output_name='testfolder_brand_new_name')\\n\"\n",
      "            \"'C:\\\\\\\\Users\\\\\\\\<username>\\\\\\\\testfolder_brand_new_name'\\n\",\n",
      " 'function_call': 'rename_folder(input_path, output_name=None)',\n",
      " 'icon': 'las la-folder',\n",
      " 'keywords': ['folder',\n",
      "              'rename',\n",
      "              'rename folder',\n",
      "              'organise folder',\n",
      "              'folders',\n",
      "              'folder manipulation',\n",
      "              'explorer',\n",
      "              'nautilus'],\n",
      " 'name': 'Rename folder',\n",
      " 'parameters': [{'description': ' Full path of folder that will be renamed\\n',\n",
      "                 'name': ' input_path'},\n",
      "                {'description': ' New name. By default folder will be renamed '\n",
      "                                \"to original folder name with '_renamed' added \"\n",
      "                                'to the folder name.\\n',\n",
      "                 'name': ' output_name'}],\n",
      " 'return': ' Path to renamed folder as a string.\\n',\n",
      " 'snippet': '# Make new folder in home directory for illustration\\n'\n",
      "            'testfolder = create_folder()\\n'\n",
      "            '# Rename the folder\\n'\n",
      "            'rename_folder(testfolder, '\n",
      "            \"output_name='testfolder_brand_new_name')\\n\"}\n",
      "{'description': 'Open a folder with the default explorer.',\n",
      " 'example': '>>> # Make new folder in home directory for illustration\\n'\n",
      "            '>>> testfolder = create_folder()\\n'\n",
      "            '>>> # Open folder\\n'\n",
      "            '>>> show_folder(testfolder)\\n'\n",
      "            \"'C:\\\\\\\\Users\\\\\\\\<username>\\\\\\\\new_folder'\\n\",\n",
      " 'function_call': 'show_folder(input_path=None)',\n",
      " 'icon': 'las la-folder-open',\n",
      " 'keywords': ['folder', 'open', 'open folder', 'explorer', 'nautilus'],\n",
      " 'name': 'Open a folder',\n",
      " 'parameters': [{'description': ' Full path of folder that will be opened. '\n",
      "                                'Default value is the home directory\\n',\n",
      "                 'name': ' input_path'}],\n",
      " 'return': ' Path to opend folder as a string\\n',\n",
      " 'snippet': '# Make new folder in home directory for illustration\\n'\n",
      "            'testfolder = create_folder()\\n'\n",
      "            '# Open folder\\n'\n",
      "            'show_folder(testfolder)\\n'}\n",
      "{'description': 'Moves a folder from one place to another.',\n",
      " 'example': '>>> # Make new folder in home directory for illustration\\n'\n",
      "            '>>> # If no new_folder exists in home dir this will be called '\n",
      "            'new_folder\\n'\n",
      "            '>>> testfolder = create_folder()\\n'\n",
      "            '>>> # Make a second new folder\\n'\n",
      "            '>>> # Since new_folder already exists this folder will get a '\n",
      "            'random id added (in this case abc1)\\n'\n",
      "            '>>> testfolder_2 = create_folder()\\n'\n",
      "            '>>> # Move testfolder in testfolder_2\\n'\n",
      "            '>>> move_folder(testfolder, testfolder_2)\\n'\n",
      "            \"'C:\\\\\\\\Users\\\\\\\\<username>\\\\\\\\new_folder_abc1\\\\\\\\new_folder'\\n\",\n",
      " 'function_call': 'move_folder(input_path, output_path=None)',\n",
      " 'icon': 'las la-folder',\n",
      " 'keywords': ['folder',\n",
      "              'move',\n",
      "              'move folder',\n",
      "              'explorer',\n",
      "              'nautilus',\n",
      "              'folder manipulation'],\n",
      " 'name': 'Move a folder',\n",
      " 'parameters': [{'description': ' Full path to the source location of the '\n",
      "                                'folder\\n',\n",
      "                 'name': ' input_path'},\n",
      "                {'description': ' Full path to the destination location of the '\n",
      "                                \"folder, defaults to input_path with '_moved' \"\n",
      "                                'added\\n',\n",
      "                 'name': ' output_path'}],\n",
      " 'return': ' Path to new location of folder as a string. None if folder could '\n",
      "           'not be moved.\\n',\n",
      " 'snippet': '# Make new folder in home directory for illustration\\n'\n",
      "            '# If no new_folder exists in home dir this will be called '\n",
      "            'new_folder\\n'\n",
      "            'testfolder = create_folder()\\n'\n",
      "            '# Make a second new folder\\n'\n",
      "            '# Since new_folder already exists this folder will get a random '\n",
      "            'id added (in this case abc1)\\n'\n",
      "            'testfolder_2 = create_folder()\\n'\n",
      "            '# Move testfolder in testfolder_2\\n'\n",
      "            'move_folder(testfolder, testfolder_2)\\n'}\n",
      "{'description': 'Remove a folder including all subfolders and files. For the '\n",
      "                'function to work optimal, all files and subfolders in the '\n",
      "                'main targetfolder should be closed.',\n",
      " 'example': '>>> # Make new folder in home directory for illustration\\n'\n",
      "            '>>> testfolder = create_folder()\\n'\n",
      "            '>>> # Check if folder exists\\n'\n",
      "            '>>> print( folder_exists(testfolder) ) # Should print True\\n'\n",
      "            '>>> # Remove folder\\n'\n",
      "            '>>> remove_folder(testfolder)\\n'\n",
      "            '>>> # Check again if folder exists\\n'\n",
      "            '>>> folder_exists(testfolder)\\n'\n",
      "            'False\\n',\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " 'function_call': 'remove_folder(input_path, allow_root=False, '\n",
      "                  'delete_read_only=True)',\n",
      " 'icon': 'las la-folder-minus',\n",
      " 'keywords': ['folder',\n",
      "              'delete folder',\n",
      "              'delete',\n",
      "              'nautilus',\n",
      "              'folder manipulation',\n",
      "              'explorer',\n",
      "              'delete folder',\n",
      "              'remove',\n",
      "              'remove folder'],\n",
      " 'name': 'Remove folder',\n",
      " 'parameters': [{'description': ' Full path to the folder that will be '\n",
      "                                'deleted\\n',\n",
      "                 'name': ' input_path'},\n",
      "                {'description': ' Allow paths with an arbitrary length of 10 '\n",
      "                                'characters or shorter to be deleted. Default '\n",
      "                                'value is False.\\n',\n",
      "                 'name': ' allow_root'},\n",
      "                {'description': ' Option to delete read only\\n',\n",
      "                 'name': ' delete_read_only'}],\n",
      " 'return': ' Path to deleted folder as a string\\n',\n",
      " 'snippet': '# Make new folder in home directory for illustration\\n'\n",
      "            'testfolder = create_folder()\\n'\n",
      "            '# Check if folder exists\\n'\n",
      "            'print( folder_exists(testfolder) ) # Should print True\\n'\n",
      "            '# Remove folder\\n'\n",
      "            'remove_folder(testfolder)\\n'\n",
      "            '# Check again if folder exists\\n'\n",
      "            'folder_exists(testfolder)\\n'}\n",
      "{'description': 'Remove all contents from a folderFor the function to work '\n",
      "                'optimal, all files and subfolders in the main targetfolder '\n",
      "                'should be closed.',\n",
      " 'example': '>>> # Make new folder in home directory for illustration\\n'\n",
      "            '>>> testfolder = create_folder()\\n'\n",
      "            '>>> # Make new text file in this folder\\n'\n",
      "            '>>> text_file_location = make_text_file(output_path = '\n",
      "            'testfolder)\\n'\n",
      "            '>>> # Print all files in the testfolder\\n'\n",
      "            '>>> get_files_in_folder(testfolder) \\n'\n",
      "            '>>> # Empty the folder\\n'\n",
      "            '>>> empty_folder(testfolder)\\n'\n",
      "            '>>> # Check what is in the folder\\n'\n",
      "            '>>> get_files_in_folder(testfolder)\\n'\n",
      "            '[]\\n',\n",
      " 'function_call': 'empty_folder(input_path, allow_root=False)',\n",
      " 'icon': 'las la-folder-minus',\n",
      " 'keywords': ['folder',\n",
      "              'empty folder',\n",
      "              'delete',\n",
      "              'empty',\n",
      "              'clean',\n",
      "              'clean folder',\n",
      "              'nautilus',\n",
      "              'folder manipulation',\n",
      "              'explorer',\n",
      "              'delete folder',\n",
      "              'remove',\n",
      "              'remove folder'],\n",
      " 'name': 'Empty folder',\n",
      " 'parameters': [{'description': ' Full path to the folder that will be '\n",
      "                                'emptied\\n',\n",
      "                 'name': ' input_path'},\n",
      "                {'description': ' Allow paths with an arbitrary length of 10 '\n",
      "                                'characters or shorter to be emptied. Default '\n",
      "                                'value is False.\\n',\n",
      "                 'name': ' allow_root'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Make new folder in home directory for illustration\\n'\n",
      "            'testfolder = create_folder()\\n'\n",
      "            '# Make new text file in this folder\\n'\n",
      "            'text_file_location = make_text_file(output_path = testfolder)\\n'\n",
      "            '# Print all files in the testfolder\\n'\n",
      "            'get_files_in_folder(testfolder) \\n'\n",
      "            '# Empty the folder\\n'\n",
      "            'empty_folder(testfolder)\\n'\n",
      "            '# Check what is in the folder\\n'\n",
      "            'get_files_in_folder(testfolder)\\n'}\n",
      "{'description': 'Check whether folder exists or not, regardless if folder is '\n",
      "                'empty or not.',\n",
      " 'example': '>>> # Make new folder in home directory for illustration\\n'\n",
      "            '>>> testfolder = create_folder()\\n'\n",
      "            '>>> # Check if folder exists\\n'\n",
      "            '>>> folder_exists(testfolder)\\n'\n",
      "            'True\\n',\n",
      " 'function_call': 'folder_exists(path)',\n",
      " 'icon': 'las la-folder',\n",
      " 'keywords': ['folder',\n",
      "              'folder exists',\n",
      "              'nautilus',\n",
      "              'explorer',\n",
      "              'folder manipulation',\n",
      "              'files'],\n",
      " 'name': 'Checks if folder exists',\n",
      " 'parameters': [{'description': ' Full path to folder\\n',\n",
      "                 'name': ' input_path'}],\n",
      " 'return': ' Boolean\\n',\n",
      " 'snippet': '# Make new folder in home directory for illustration\\n'\n",
      "            'testfolder = create_folder()\\n'\n",
      "            '# Check if folder exists\\n'\n",
      "            'folder_exists(testfolder)\\n'}\n",
      "{'description': 'Copies a folder from one place to another.',\n",
      " 'example': '>>> # Make new folder in home directory for illustration\\n'\n",
      "            '>>> testfolder = create_folder()\\n'\n",
      "            '>>> # Copy this folder\\n'\n",
      "            '>>> # Since new_folder already exists in home dir this folder '\n",
      "            'will get a random id added (in this case abc1)\\n'\n",
      "            '>>> copy_folder(testfolder)\\n',\n",
      " 'function_call': 'copy_folder(input_path, output_path=None)',\n",
      " 'icon': 'lar la-folder',\n",
      " 'keywords': ['folder',\n",
      "              'move',\n",
      "              'move folder',\n",
      "              'explorer',\n",
      "              'nautilus',\n",
      "              'folder manipulation'],\n",
      " 'name': 'Copy a folder',\n",
      " 'parameters': [{'description': ' Full path to the source location of the '\n",
      "                                'folder\\n',\n",
      "                 'name': ' input_path'},\n",
      "                {'description': ' Full path to the destination location of the '\n",
      "                                'folder. If no path is specified folder will '\n",
      "                                'get copied in the input directory with '\n",
      "                                \"'_copied' added\\n\",\n",
      "                 'name': ' output_path'}],\n",
      " 'return': ' Path to new folder as string\\n',\n",
      " 'snippet': '# Make new folder in home directory for illustration\\n'\n",
      "            'testfolder = create_folder()\\n'\n",
      "            '# Copy this folder\\n'\n",
      "            '# Since new_folder already exists in home dir this folder will '\n",
      "            'get a random id added (in this case abc1)\\n'\n",
      "            'copy_folder(testfolder)\\n'}\n",
      "{'description': 'Zip folder and its contents. Creates a .zip file.',\n",
      " 'example': '>>> # Make new folder in home directory for illustration\\n'\n",
      "            '>>> testfolder = create_folder()\\n'\n",
      "            '>>> # Zip this folder\\n'\n",
      "            '>>> zip_folder(testfolder)\\n',\n",
      " 'function_call': 'zip_folder(input_path, output_path=None)',\n",
      " 'icon': 'las la-archive',\n",
      " 'keywords': ['zip', 'zipping', 'winrar', 'rar', '7zip', 'compress', 'unzip'],\n",
      " 'name': 'Zip',\n",
      " 'parameters': [{'description': ' Full path to the source location of the '\n",
      "                                'folder that will be zipped\\n',\n",
      "                 'name': ' input_path'},\n",
      "                {'description': ' Full path to save the zipped folder. If no '\n",
      "                                'path is specified a folder with the original '\n",
      "                                \"folder with '_zipped' added\\n\",\n",
      "                 'name': ' output_path'}],\n",
      " 'return': ' Path to zipped folder\\n',\n",
      " 'snippet': '# Make new folder in home directory for illustration\\n'\n",
      "            'testfolder = create_folder()\\n'\n",
      "            '# Zip this folder\\n'\n",
      "            'zip_folder(testfolder)\\n'}\n",
      "{'description': 'Unzips a file or folder from a .zip file.',\n",
      " 'example': '>>> # Make new file in home directory for illustration\\n'\n",
      "            '>>> testfolder = create_folder()\\n'\n",
      "            '>>> # Add some files to this folder\\n'\n",
      "            '>>> make_text_file(output_path = testfolder)\\n'\n",
      "            '>>> # Zip this folder\\n'\n",
      "            '>>> zipped_folder = zip_folder(testfolder)\\n'\n",
      "            '>>> # Unzip this folder\\n'\n",
      "            '>>> unzip(zipped_folder)\\n',\n",
      " 'function_call': 'unzip(input_path, output_path=None)',\n",
      " 'icon': 'las la-archive',\n",
      " 'keywords': ['zip', 'zipping', 'winrar', 'rar', '7zip', 'compress', 'unzip'],\n",
      " 'name': 'Unzip',\n",
      " 'parameters': [{'description': ' Full path to the source location of the file '\n",
      "                                'or folder that will be unzipped\\n',\n",
      "                 'name': ' input_path'},\n",
      "                {'description': ' Full path to save unzipped contents. If no '\n",
      "                                'path is specified the unzipped contents will '\n",
      "                                'be stored in the same directory as the zipped '\n",
      "                                'file is located. \\n',\n",
      "                 'name': ' to_path'}],\n",
      " 'return': ' Path to unzipped folder\\n',\n",
      " 'snippet': '# Make new file in home directory for illustration\\n'\n",
      "            'testfolder = create_folder()\\n'\n",
      "            '# Add some files to this folder\\n'\n",
      "            'make_text_file(output_path = testfolder)\\n'\n",
      "            '# Zip this folder\\n'\n",
      "            'zipped_folder = zip_folder(testfolder)\\n'\n",
      "            '# Unzip this folder\\n'\n",
      "            'unzip(zipped_folder)\\n'}\n",
      "{'description': 'Return most recent file in directory',\n",
      " 'example': '>>> # Find most recent file in homedir\\n>>> most_recent_file()\\n',\n",
      " 'function_call': 'most_recent_file(input_path=None)',\n",
      " 'icon': 'las la-clock',\n",
      " 'keywords': ['find file', 'file', 'recent', 'newest', 'latest', 'recent'],\n",
      " 'name': 'Return most recent file in directory',\n",
      " 'parameters': [{'description': ' Path which will be scanned for most recent '\n",
      "                                'file, defaults to homedir\\n',\n",
      "                 'name': ' input_path'}],\n",
      " 'return': ' Path to most recent file\\n',\n",
      " 'snippet': '# Find most recent file in homedir\\nmost_recent_file()\\n'}\n",
      "{'description': 'Make the robot wait for a specified number of seconds. Note '\n",
      "                'that this activity is blocking. This means that subsequent '\n",
      "                'activities will not occur until the the specified waiting '\n",
      "                'time has expired.',\n",
      " 'example': \">>> print('Start the wait')\\n\"\n",
      "            '>>> wait()\\n'\n",
      "            \">>> print('The wait is over')\\n\",\n",
      " 'function_call': 'wait(seconds=1)',\n",
      " 'icon': 'las la-hourglass',\n",
      " 'keywords': ['wait', 'sleep', 'time', 'timeout', 'time-out', 'hold', 'pause'],\n",
      " 'name': 'Wait',\n",
      " 'parameters': [{'description': ' Time in seconds to wait\\n',\n",
      "                 'name': ' seconds'}],\n",
      " 'return': '',\n",
      " 'snippet': \"print('Start the wait')\\nwait()\\nprint('The wait is over')\\n\"}\n",
      "{'description': 'Waits until a folder exists.Not that this activity is '\n",
      "                'blocking and will keep the system waiting.',\n",
      " 'example': '>>> # Create a random folder\\n'\n",
      "            '>>> testfolder = create_folder()\\n'\n",
      "            '>>> # Wait for the snippet to be visible\\n'\n",
      "            '>>> wait_folder_exists(testfolder)\\n',\n",
      " 'function_call': 'wait_folder_exists(input_path, timeout=60)',\n",
      " 'icon': 'las la-hourglass',\n",
      " 'keywords': ['image matching',\n",
      "              'wait',\n",
      "              'pause',\n",
      "              'vision',\n",
      "              'template',\n",
      "              'template matching'],\n",
      " 'name': 'Wait for folder',\n",
      " 'parameters': [{'description': ' Full path to folder.\\n',\n",
      "                 'name': ' input_path'},\n",
      "                {'description': ' Maximum time in seconds to wait before '\n",
      "                                'continuing. Default value is 60 seconds.\\n',\n",
      "                 'name': ' timeout'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Create a random folder\\n'\n",
      "            'testfolder = create_folder()\\n'\n",
      "            '# Wait for the snippet to be visible\\n'\n",
      "            'wait_folder_exists(testfolder)\\n'}\n",
      "{'description': 'For this activity to work, Microsoft Office Word needs to be '\n",
      "                'installed on the system.',\n",
      " 'example': '>>> word = Word()\\n',\n",
      " 'function_call': 'Word(file_path=None, visible=True,)',\n",
      " 'icon': 'lar la-file-word',\n",
      " 'keywords': ['word',\n",
      "              'editor',\n",
      "              'text',\n",
      "              'text edit',\n",
      "              'office',\n",
      "              'document',\n",
      "              'microsoft word',\n",
      "              'doc',\n",
      "              'docx'],\n",
      " 'name': 'Start Word Application',\n",
      " 'parameters': [{'description': ' Enter a path to open Word with an existing '\n",
      "                                'Word file. If no path is specified a document '\n",
      "                                'will be initialized, this is the default '\n",
      "                                'value.\\n',\n",
      "                 'name': ' file_path'},\n",
      "                {'description': ' Show Word in the foreground if True or hide '\n",
      "                                'if False, defaults to True.\\n',\n",
      "                 'name': ' visible'}],\n",
      " 'return': ' Application object (win32com.client)\\n',\n",
      " 'snippet': 'word = Word()\\n'}\n",
      "{'description': 'Save active Word document',\n",
      " 'example': '>>> # Start Word\\n'\n",
      "            '>>> word = Word()\\n'\n",
      "            \">>> word.append_text('This is sample text')\\n\"\n",
      "            \">>> word.save_as('automagica_document.docx')\\n\",\n",
      " 'function_call': 'save(self)',\n",
      " 'icon': 'lar la-file-word',\n",
      " 'keywords': ['word', 'save', 'document', 'doc', 'docx'],\n",
      " 'name': 'Save',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': '# Start Word\\n'\n",
      "            'word = Word()\\n'\n",
      "            \"word.append_text('This is sample text')\\n\"\n",
      "            \"word.save_as('automagica_document.docx')\\n\"}\n",
      "{'description': 'Save active Word document to a specific location',\n",
      " 'example': '>>> # Start Word\\n'\n",
      "            '>>> word = Word()\\n'\n",
      "            \">>> word.append_text('This is sample text')\\n\"\n",
      "            \">>> word.save_as('document.odt')\\n\",\n",
      " 'function_call': 'save_as(output_path)',\n",
      " 'icon': 'lar la-file-word',\n",
      " 'keywords': ['word', 'save as', 'document', 'doc', 'docx'],\n",
      " 'name': 'Save As',\n",
      " 'parameters': [{'description': ' Enter a path to open Word with an existing '\n",
      "                                'Word file.\\n',\n",
      "                 'name': ' output_path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Start Word\\n'\n",
      "            'word = Word()\\n'\n",
      "            \"word.append_text('This is sample text')\\n\"\n",
      "            \"word.save_as('document.odt')\\n\"}\n",
      "{'description': 'Append text at end of Word document.',\n",
      " 'example': '>>> # Start Word\\n'\n",
      "            '>>> word = Word()\\n'\n",
      "            \">>> word.append_text('This is sample text')\\n\",\n",
      " 'function_call': 'append_text(text)',\n",
      " 'icon': 'lar la-file-word',\n",
      " 'keywords': ['word',\n",
      "              'editor',\n",
      "              'text',\n",
      "              'text edit',\n",
      "              'office',\n",
      "              'document',\n",
      "              'microsoft word',\n",
      "              'doc',\n",
      "              'docx'],\n",
      " 'name': 'Append text',\n",
      " 'parameters': [{'description': ' Text to append to document\\n',\n",
      "                 'name': ' text'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Start Word\\n'\n",
      "            'word = Word()\\n'\n",
      "            \"word.append_text('This is sample text')\\n\"}\n",
      "{'description': 'Can be used for example to replace arbitrary placeholder '\n",
      "                \"value. For example whenusing template document, using 'XXXX' \"\n",
      "                'as a placeholder. Take note that all strings are case '\n",
      "                'sensitive.',\n",
      " 'example': '>>> # Start Word\\n'\n",
      "            '>>> word = Word()\\n'\n",
      "            \">>> word.append_text('This is sample text')\\n\"\n",
      "            \">>> word.replace_text('sample', 'real')\\n\",\n",
      " 'function_call': 'replace_text(placeholder_text, replacement_text)',\n",
      " 'icon': 'lar la-file-word',\n",
      " 'keywords': ['word', 'replace', 'text', 'template', 'doc', 'docx'],\n",
      " 'name': 'Replace text',\n",
      " 'parameters': [{'description': ' Placeholder text value in the document, this '\n",
      "                                \"will be replaced, e.g. 'Company Name'\\n\",\n",
      "                 'name': ' placeholder_text'},\n",
      "                {'description': ' Text to replace the placeholder values with. '\n",
      "                                'It is recommended to make this unique to '\n",
      "                                'avoid wrongful replacement, e.g. '\n",
      "                                \"'XXXX_placeholder_XXX'\\n\",\n",
      "                 'name': ' replacement_text'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Start Word\\n'\n",
      "            'word = Word()\\n'\n",
      "            \"word.append_text('This is sample text')\\n\"\n",
      "            \"word.replace_text('sample', 'real')\\n\"}\n",
      "{'description': 'Read all the text from a document',\n",
      " 'example': '>>> # Start Word\\n'\n",
      "            '>>> word = Word()\\n'\n",
      "            \">>> word.append_text('This is sample text')\\n\"\n",
      "            \">>> word.replace_text('sample', 'real')\\n\"\n",
      "            '>>> word.read_all_text()\\n'\n",
      "            \"'This is real text'\\n\",\n",
      " 'function_call': 'read_all_text(return_as_list=False)',\n",
      " 'icon': 'lar la-file-word',\n",
      " 'keywords': ['word', 'extract', 'text', 'document', 'doc', 'docx'],\n",
      " 'name': 'Read all text',\n",
      " 'parameters': [{'description': ' Set this paramater to True to return text as '\n",
      "                                'a list of strings. Default value is False.\\n',\n",
      "                 'name': ' return_as_list'}],\n",
      " 'return': ' Text from the document\\n',\n",
      " 'snippet': '# Start Word\\n'\n",
      "            'word = Word()\\n'\n",
      "            \"word.append_text('This is sample text')\\n\"\n",
      "            \"word.replace_text('sample', 'real')\\n\"\n",
      "            'word.read_all_text()\\n'}\n",
      "{'description': 'Export the document to PDF',\n",
      " 'example': '>>> # Start Word\\n'\n",
      "            '>>> word = Word()\\n'\n",
      "            \">>> word.append_text('This is sample text')\\n\"\n",
      "            \">>> word.replace_text('sample', 'real')\\n\"\n",
      "            \">>> word.export_to_pdf('output.pdf')\\n\",\n",
      " 'function_call': 'export_to_pdf(output_path=None)',\n",
      " 'icon': 'lar la-file-pdf',\n",
      " 'keywords': ['word', 'pdf', 'document', 'export', 'save as', 'doc', 'docx'],\n",
      " 'name': 'Export to PDF',\n",
      " 'parameters': [{'description': ' Output path where PDF file will be exported '\n",
      "                                'to. Default path is home directory with '\n",
      "                                \"filename 'pdf_export.pdf'.\\n\",\n",
      "                 'name': ' output_path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Start Word\\n'\n",
      "            'word = Word()\\n'\n",
      "            \"word.append_text('This is sample text')\\n\"\n",
      "            \"word.replace_text('sample', 'real')\\n\"\n",
      "            \"word.export_to_pdf('output.pdf')\\n\"}\n",
      "{'description': 'Export to HTML',\n",
      " 'example': '>>> # Start Word\\n'\n",
      "            '>>> word = Word()\\n'\n",
      "            \">>> word.append_text('This is sample text')\\n\"\n",
      "            \">>> word.replace_text('sample', 'real')\\n\"\n",
      "            \">>> word.export_to_html('output.html')\\n\",\n",
      " 'function_call': 'export_to_html(output_path=None)',\n",
      " 'icon': 'las la-html5',\n",
      " 'keywords': ['word', 'html', 'document', 'export', 'save as', 'doc', 'docx'],\n",
      " 'name': 'Export to HTML',\n",
      " 'parameters': [{'description': ' Output path where HTML file will be exported '\n",
      "                                'to. Default path is home directory with '\n",
      "                                \"filename 'html_export.html'.\\n\",\n",
      "                 'name': ' file_path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Start Word\\n'\n",
      "            'word = Word()\\n'\n",
      "            \"word.append_text('This is sample text')\\n\"\n",
      "            \"word.replace_text('sample', 'real')\\n\"\n",
      "            \"word.export_to_html('output.html')\\n\"}\n",
      "{'description': 'Set the footers of the document',\n",
      " 'example': '>>> # Start Word\\n'\n",
      "            '>>> word = Word()\\n'\n",
      "            \">>> word.set_footers('This is a footer!')\\n\",\n",
      " 'function_call': 'set_footers(text)',\n",
      " 'icon': 'las la-heading',\n",
      " 'keywords': ['word', 'footer', 'footers', 'doc', 'docx'],\n",
      " 'name': 'Set footers',\n",
      " 'parameters': [{'description': ' Text to put in the footer\\n',\n",
      "                 'name': ' text'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Start Word\\n'\n",
      "            'word = Word()\\n'\n",
      "            \"word.set_footers('This is a footer!')\\n\"}\n",
      "{'description': 'Set the headers of the document',\n",
      " 'example': '>>> # Start Word\\n'\n",
      "            '>>> word = Word()\\n'\n",
      "            \">>> word.set_headers('This is a header!')\\n\",\n",
      " 'function_call': 'set_headers(text)',\n",
      " 'icon': 'las la-subscript',\n",
      " 'keywords': ['word', 'header', 'headers', 'doc', 'docx'],\n",
      " 'name': 'Set headers',\n",
      " 'parameters': [{'description': ' Text to put in the header\\n',\n",
      "                 'name': ' text'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Start Word\\n'\n",
      "            'word = Word()\\n'\n",
      "            \"word.set_headers('This is a header!')\\n\"}\n",
      "{'description': \"This closes Word, make sure to use 'save' or 'save_as' if you \"\n",
      "                'would like to save before quitting.',\n",
      " 'example': '>>> # Open Word  \\n'\n",
      "            '>>> word = Word()\\n'\n",
      "            '>>> # Quit Word\\n'\n",
      "            '>>> word.quit()\\n',\n",
      " 'function_call': 'quit(self)',\n",
      " 'icon': 'la-file-word',\n",
      " 'keywords': ['word', 'wordfile', 'doc quit', 'close', 'doc', 'docx'],\n",
      " 'name': 'Quit Word',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': '# Open Word  \\nword = Word()\\n# Quit Word\\nword.quit()\\n'}\n",
      "{'description': 'These activities can read, write and edit Word (docx) files '\n",
      "                'without the need of having Word installed.Note that, in '\n",
      "                \"contrary to working with the :func: 'Word' activities, a file \"\n",
      "                'get saved directly after manipulation.',\n",
      " 'example': '>>> wordfile = WordFile()\\n'\n",
      "            \">>> wordfile.append_text('Some sample text')\\n\"\n",
      "            '>>> wordfile.read_all_text()\\n'\n",
      "            \"'Some sample text'\\n\",\n",
      " 'function_call': 'WordFile(file_path=None)',\n",
      " 'icon': 'las la-file-word',\n",
      " 'keywords': ['word', 'read', 'text', 'file'],\n",
      " 'name': 'Read and Write Word files',\n",
      " 'parameters': [{'description': ' Enter a path to open Word with an existing '\n",
      "                                'Word file. If no path is specified a '\n",
      "                                \"'document.docx' will be initialized in the \"\n",
      "                                'home directory, this is the default value. If '\n",
      "                                'a document with the same name already exists '\n",
      "                                'the file will be overwritten.\\n',\n",
      "                 'name': ' file_path'}],\n",
      " 'return': '',\n",
      " 'snippet': 'wordfile = WordFile()\\n'\n",
      "            \"wordfile.append_text('Some sample text')\\n\"\n",
      "            'wordfile.read_all_text()\\n'}\n",
      "{'description': 'Read all the text from the document',\n",
      " 'example': '>>> wordfile = WordFile()\\n'\n",
      "            \">>> wordfile.append_text('Some sample text')\\n\"\n",
      "            '>>> wordfile.read_all_text()\\n'\n",
      "            \"'Some sample text'\\n\",\n",
      " 'function_call': 'read_all_text(return_as_list=False)',\n",
      " 'icon': 'las la-file-word',\n",
      " 'keywords': ['word', 'read', 'text', 'file'],\n",
      " 'name': 'Read all text',\n",
      " 'parameters': [{'description': ' Set this paramater to True to return text as '\n",
      "                                'a list of strings. Default value is False.\\n',\n",
      "                 'name': ' return_as_list'}],\n",
      " 'return': ' Text of the document\\n',\n",
      " 'snippet': 'wordfile = WordFile()\\n'\n",
      "            \"wordfile.append_text('Some sample text')\\n\"\n",
      "            'wordfile.read_all_text()\\n'}\n",
      "{'description': 'Append text at the end of the document',\n",
      " 'example': '>>> wordfile = WordFile()\\n'\n",
      "            \">>> wordfile.append_text('Some sample text')\\n\",\n",
      " 'function_call': 'append_text(text, auto_save=True)',\n",
      " 'icon': 'las la-file-word',\n",
      " 'keywords': ['word', 'append text', 'add text'],\n",
      " 'name': 'Append text',\n",
      " 'parameters': [{'description': ' Text to append\\n', 'name': ' text'},\n",
      "                {'description': ' Save document after performing activity. '\n",
      "                                'Default value is True\\n',\n",
      "                 'name': ' auto_save'}],\n",
      " 'return': '',\n",
      " 'snippet': \"wordfile = WordFile()\\nwordfile.append_text('Some sample text')\\n\"}\n",
      "{'description': 'Save document',\n",
      " 'example': '>>> wordfile = WordFile()\\n'\n",
      "            \">>> wordfile.append_text('Some sample text')\\n\"\n",
      "            '>>> wordfile.save()\\n',\n",
      " 'function_call': 'save(self)',\n",
      " 'icon': 'las la-file-word',\n",
      " 'keywords': ['word', 'save', 'store'],\n",
      " 'name': 'Save',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': 'wordfile = WordFile()\\n'\n",
      "            \"wordfile.append_text('Some sample text')\\n\"\n",
      "            'wordfile.save()\\n'}\n",
      "{'description': 'Save file on specified path',\n",
      " 'example': '>>> wordfile = WordFile()\\n'\n",
      "            \">>> wordfile.append_text('Some sample text')\\n\"\n",
      "            \">>> wordfile.save_as('document.docx')\\n\",\n",
      " 'function_call': 'save_as(output_path)',\n",
      " 'icon': 'las la-file-word',\n",
      " 'keywords': ['word', 'save as', 'store'],\n",
      " 'name': 'Save as',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': 'wordfile = WordFile()\\n'\n",
      "            \"wordfile.append_text('Some sample text')\\n\"\n",
      "            \"wordfile.save_as('document.docx')\\n\"}\n",
      "{'description': 'Set headers of Word document',\n",
      " 'example': '>>> wordfile = WordFile()\\n'\n",
      "            \">>> wordfile.append_text('Some sample text')\\n\"\n",
      "            \">>> wordfile.set_headers('This is a header')\\n\",\n",
      " 'function_call': 'set_headers(text, auto_save=True)',\n",
      " 'icon': 'las la-file-word',\n",
      " 'keywords': ['word', 'header text'],\n",
      " 'name': 'Set headers',\n",
      " 'parameters': [{'description': ' Text to put in the header\\n',\n",
      "                 'name': ' text'},\n",
      "                {'description': ' Save document after performing activity. '\n",
      "                                'Default value is True\\n',\n",
      "                 'name': ' auto_save'}],\n",
      " 'return': '',\n",
      " 'snippet': 'wordfile = WordFile()\\n'\n",
      "            \"wordfile.append_text('Some sample text')\\n\"\n",
      "            \"wordfile.set_headers('This is a header')\\n\"}\n",
      "{'description': 'Replaces all occurences of a placeholder text in the document '\n",
      "                'with a replacement text.',\n",
      " 'example': '>>> wordfile = WordFile()\\n'\n",
      "            \">>> wordfile.append_text('Some sample text')\\n\"\n",
      "            \">>> wordfile.replace_text('sample', 'real')\\n\",\n",
      " 'function_call': 'replace_text(placeholder_text, replacement_text, '\n",
      "                  'auto_save=True)',\n",
      " 'icon': 'las la-file-word',\n",
      " 'keywords': ['word', 'replace text', 'template'],\n",
      " 'name': 'Replace all',\n",
      " 'parameters': [{'description': ' Placeholder text value (string) in the '\n",
      "                                'document, this will be replaced, e.g. '\n",
      "                                \"'Company Name'\\n\",\n",
      "                 'name': ' placeholder_text'},\n",
      "                {'description': ' Text (string) to replace the placeholder '\n",
      "                                'values with. It is recommended to make this '\n",
      "                                'unique to avoid wrongful replacement, e.g. '\n",
      "                                \"'XXXX_placeholder_XXX'\\n\",\n",
      "                 'name': ' replacement_text'},\n",
      "                {'description': ' Save document after performing activity. '\n",
      "                                'Default value is True\\n',\n",
      "                 'name': ' auto_save'}],\n",
      " 'return': '',\n",
      " 'snippet': 'wordfile = WordFile()\\n'\n",
      "            \"wordfile.append_text('Some sample text')\\n\"\n",
      "            \"wordfile.replace_text('sample', 'real')\\n\"}\n",
      "{'description': 'For this activity to work, Outlook needs to be installed on '\n",
      "                'the system.',\n",
      " 'example': '>>> outlook = Outlook()\\n',\n",
      " 'function_call': 'Outlook(account_name=None)',\n",
      " 'icon': 'las la-mail-bulk',\n",
      " 'keywords': ['outlook', 'send e-mail', 'send mail'],\n",
      " 'name': 'Start Outlook Application',\n",
      " 'parameters': [{'description': ' Name of the account\\n',\n",
      "                 'name': ' account_name'}],\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " 'return': ' Application object (win32com.client)\\n',\n",
      " 'snippet': 'outlook = Outlook()\\n'}\n",
      "{'description': 'Send an e-mail using Outlook',\n",
      " 'example': '>>> outlook = Outlook()\\n'\n",
      "            \">>> outlook.send_mail('test@test.com', subject='Hello world', \"\n",
      "            \"body='Hi there')\\n\",\n",
      " 'function_call': 'send_mail(self,to_address,subject=\"\",body=\"\",html_body=None,attachment_paths=None,)',\n",
      " 'icon': 'las la-mail-bulk',\n",
      " 'keywords': ['outlook', 'send e-mail', 'send mail'],\n",
      " 'name': 'Send e-mail',\n",
      " 'parameters': [{'description': ' The e-mail address the e-mail should be sent '\n",
      "                                'to\\n',\n",
      "                 'name': ' to_address'},\n",
      "                {'description': ' The subject of the e-mail\\n',\n",
      "                 'name': ' subject'},\n",
      "                {'description': ' The text body contents of the e-mail\\n',\n",
      "                 'name': ' body'},\n",
      "                {'description': ' The HTML body contents of the e-mail '\n",
      "                                '(optional)\\n',\n",
      "                 'name': ' html_body'},\n",
      "                {'description': ' List of file paths to attachments\\n',\n",
      "                 'name': ' attachment_paths'}],\n",
      " 'return': '',\n",
      " 'snippet': 'outlook = Outlook()\\n'\n",
      "            \"outlook.send_mail('test@test.com', subject='Hello world', \"\n",
      "            \"body='Hi there')\\n\"}\n",
      "{'description': 'Retrieve list of folders from Outlook',\n",
      " 'example': '>>> outlook = Outlook()\\n'\n",
      "            '>>> outlook.get_folders()\\n'\n",
      "            \"['Inbox', 'Sent', ...]\\n\",\n",
      " 'function_call': 'get_folders(limit=999)',\n",
      " 'icon': 'las la-mail-bulk',\n",
      " 'keywords': ['outlook', 'get folders', 'list folders'],\n",
      " 'name': 'Retrieve folders',\n",
      " 'parameters': [{'description': ' Maximum number of folders to retrieve\\n',\n",
      "                 'name': ' limit'}],\n",
      " 'return': '',\n",
      " 'snippet': 'outlook = Outlook()\\noutlook.get_folders()\\n'}\n",
      "{'description': 'Retrieve list of messages from Outlook',\n",
      " 'example': '>>> outlook = Outlook()\\n>>> outlook.get_mails()\\n',\n",
      " 'function_call': 'get_mails(folder_name=\"Inbox\", fields=None)',\n",
      " 'icon': 'las la-mail-bulk',\n",
      " 'keywords': ['outlook',\n",
      "              'retrieve e-mail',\n",
      "              'receive e-mails',\n",
      "              'process e-mails',\n",
      "              'get mails'],\n",
      " 'name': 'Retrieve e-mails',\n",
      " 'parameters': [{'description': ' Name of the Outlook folder, can be found '\n",
      "                                'using `get_folders`.\\n',\n",
      "                 'name': ' folder_name'},\n",
      "                {'description': ' Number of messages to retrieve\\n',\n",
      "                 'name': ' limit'},\n",
      "                {'description': ' Fields (properties) of e-mail messages to '\n",
      "                                \"give, requires tupl Stadard is 'Subject', \"\n",
      "                                \"'Body', 'SentOn' and 'SenderEmailAddress'.\\n\",\n",
      "                 'name': ' fields'}],\n",
      " 'return': ' List of dictionaries containing the e-mail messages with from, '\n",
      "           'to, subject, body and html.\\n',\n",
      " 'snippet': 'outlook = Outlook()\\noutlook.get_mails()\\n'}\n",
      "{'description': 'Deletes e-mail messages in a certain folder. Can be specified '\n",
      "                'by searching on subject, body or sender e-mail.',\n",
      " 'example': '>>> outlook = Outlook()\\n'\n",
      "            \">>> outlook.delete_mails(subject_contains='hello')\\n\",\n",
      " 'function_call': 'delete_mails(self,folder_name=\"Inbox\",limit=0,subject_contains=\"\",body_contains=\"\",sender_contains=\"\")',\n",
      " 'icon': 'las la-mail-bulk',\n",
      " 'keywords': ['outlook', 'remove e-mails', 'delete mail', 'remove mail'],\n",
      " 'name': 'Delete e-mails',\n",
      " 'parameters': [{'description': ' Name of the Outlook folder, can be found '\n",
      "                                'using `get_folders`\\n',\n",
      "                 'name': ' folder_name'},\n",
      "                {'description': ' Maximum number of e-mails to delete in one '\n",
      "                                'go\\n',\n",
      "                 'name': ' limit'},\n",
      "                {'description': ' Only delete e-mail if subject contains '\n",
      "                                'this\\n',\n",
      "                 'name': ' subject_contains'},\n",
      "                {'description': ' Only delete e-mail if body contains this\\n',\n",
      "                 'name': ' body_contains'},\n",
      "                {'description': ' Only delete e-mail if sender contains this\\n',\n",
      "                 'name': ' sender_contains'}],\n",
      " 'return': '',\n",
      " 'snippet': 'outlook = Outlook()\\n'\n",
      "            \"outlook.delete_mails(subject_contains='hello')\\n\"}\n",
      "{'description': 'Move e-mail messages in a certain folder. Can be specified by '\n",
      "                'searching on subject, body or sender e-mail.',\n",
      " 'example': '>>> outlook = Outlook()\\n'\n",
      "            \">>> outlook.move_mails(subject_contains='move me')\\n\",\n",
      " 'function_call': 'move_mails(self,source_folder_name=\"Inbox\",target_folder_name=\"Archive\",limit=0,subject_contains=\"\",body_contains=\"\",sender_contains=\"\")',\n",
      " 'icon': 'las la-mail-bulk',\n",
      " 'keywords': ['outlook', 'move e-mail', 'move e-mail to folder'],\n",
      " 'name': 'Move e-mails',\n",
      " 'parameters': [{'description': ' Name of the Outlook source folder from where '\n",
      "                                'e-mails will be moved, can be found using '\n",
      "                                '`get_folders`\\n',\n",
      "                 'name': ' source_folder_name'},\n",
      "                {'description': ' Name of the Outlook destination folder to '\n",
      "                                'where e-mails will be moved, can be found '\n",
      "                                'using `get_folders`\\n',\n",
      "                 'name': ' target_folder_name'},\n",
      "                {'description': ' Maximum number of e-mails to move in one '\n",
      "                                'go\\n',\n",
      "                 'name': ' limit'},\n",
      "                {'description': ' Only move e-mail if subject contains this\\n',\n",
      "                 'name': ' subject_contains'},\n",
      "                {'description': ' Only move e-mail if body contains this\\n',\n",
      "                 'name': ' body_contains'},\n",
      "                {'description': ' Only move e-mail if sender contains this\\n',\n",
      "                 'name': ' sender_contains'}],\n",
      " 'return': '',\n",
      " 'snippet': 'outlook = Outlook()\\n'\n",
      "            \"outlook.move_mails(subject_contains='move me')\\n\"}\n",
      "{'description': 'Save all attachments from certain folder',\n",
      " 'example': '>>> outlook = Outlook()\\n'\n",
      "            '>>> outlook.save_attachments()\\n'\n",
      "            \"['Attachment.pdf', 'Signature_image.jpeg']\\n\",\n",
      " 'function_call': 'save_attachments(folder_name=\"Inbox\", output_path=None)',\n",
      " 'icon': 'las la-mail-bulk',\n",
      " 'keywords': ['outlook',\n",
      "              'save attachments',\n",
      "              'download attachments',\n",
      "              'extract attachments'],\n",
      " 'name': 'Save attachments',\n",
      " 'parameters': [{'description': ' Name of the Outlook folder, can be found '\n",
      "                                'using `get_folders`.\\n',\n",
      "                 'name': ' folder_name'},\n",
      "                {'description': ' Path where attachments will be saved. '\n",
      "                                'Default is the home directory.\\n',\n",
      "                 'name': ' output_path'}],\n",
      " 'return': ' List of paths to saved attachments.\\n',\n",
      " 'snippet': 'outlook = Outlook()\\noutlook.save_attachments()\\n'}\n",
      "{'description': 'Retrieve all contacts',\n",
      " 'example': '>>> outlook = Outlook()\\n'\n",
      "            '>>> outlook.get_contacts()\\n'\n",
      "            '[\\n'\n",
      "            '    {\\n'\n",
      "            \"        'LastName': 'Doe',\\n\"\n",
      "            \"        'FirstName' : 'John',\\n\"\n",
      "            \"        'Email1Address': 'john@test.com'\\n\"\n",
      "            '    }\\n'\n",
      "            ']\\n',\n",
      " 'function_call': 'get_contacts(fields=None)',\n",
      " 'icon': 'las la-mail-bulk',\n",
      " 'keywords': ['outlook', 'get contacts', 'download contacts', 'rolodex'],\n",
      " 'name': 'Retrieve contacts',\n",
      " 'parameters': [{'description': ' Fields can be specified as a tuple with '\n",
      "                                'their exact names. Standard value is None '\n",
      "                                'returning \"LastName\", \"FirstName\" and '\n",
      "                                '\"Email1Address\".\\n',\n",
      "                 'name': ' fields'}],\n",
      " 'return': ' List of dictionaries containing the contact details.\\n',\n",
      " 'snippet': 'outlook = Outlook()\\n'\n",
      "            'outlook.get_contacts()\\n'\n",
      "            '    {\\n'\n",
      "            \"        'LastName': 'Doe',\\n\"\n",
      "            \"        'FirstName' : 'John',\\n\"\n",
      "            \"        'Email1Address': 'john@test.com'\\n\"\n",
      "            '    }\\n'}\n",
      "{'description': 'Add a contact to Outlook contacts',\n",
      " 'example': '>>> outlook = Outlook()\\n'\n",
      "            \">>> outlook.add_contact('sales@automagica.com')\\n\",\n",
      " 'function_call': 'add_contact(email, first_name=\"\", last_name=\"\")',\n",
      " 'icon': 'las la-mail-bulk',\n",
      " 'keywords': ['outlook', 'create contact', 'add contact'],\n",
      " 'name': 'Add a contact',\n",
      " 'parameters': [{'description': ' The e-mail address for the contact\\n',\n",
      "                 'name': ' email'},\n",
      "                {'description': ' First name for the contact (optional)\\n',\n",
      "                 'name': ' first_name'},\n",
      "                {'description': ' Last name for the contact (optional)\\n',\n",
      "                 'name': ' last_name'}],\n",
      " 'return': '',\n",
      " 'snippet': 'outlook = Outlook()\\n'\n",
      "            \"outlook.add_contact('sales@automagica.com')\\n\"}\n",
      "{'description': 'Close the Outlook application',\n",
      " 'example': '>>> outlook = Outlook()\\n>>> outlook.quit()\\n',\n",
      " 'function_call': 'quit(self)',\n",
      " 'icon': 'las la-mail-bulk',\n",
      " 'keywords': ['outlook', 'close', 'quit'],\n",
      " 'name': 'Quit',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': 'outlook = Outlook()\\noutlook.quit()\\n'}\n",
      "{'description': 'For this activity to work, Microsoft Office Excel needs to be '\n",
      "                'installed on the system.',\n",
      " 'example': '>>> # Open Excel\\n>>> excel = Excel()\\n',\n",
      " 'function_call': 'Excel(file_path=None, visible=True)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'add worksheet', 'add tab'],\n",
      " 'name': 'Start Excel Application',\n",
      " 'parameters': [{'description': ' Enter a path to open Excel with an existing '\n",
      "                                'Excel file. If no path is specified a '\n",
      "                                'workbook will be initialized, this is the '\n",
      "                                'default value.\\n',\n",
      "                 'name': ' file_path'},\n",
      "                {'description': ' Show Excel in the foreground if True or hide '\n",
      "                                'if False, defaults to True.\\n',\n",
      "                 'name': ' visible'}],\n",
      " 'return': ' Application object (win32com.client)\\n',\n",
      " 'snippet': '# Open Excel\\nexcel = Excel()\\n'}\n",
      "{'description': 'Adds a worksheet to the current workbook',\n",
      " 'example': '>>> # Open Excel\\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            '>>> # Add a worksheet\\n'\n",
      "            \">>> excel.add_worksheet('My Example Worksheet')\\n\",\n",
      " 'function_call': 'add_worksheet(name=None)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel',\n",
      "              'add worksheet',\n",
      "              'add tab',\n",
      "              'insert worksheet',\n",
      "              'new worksheet'],\n",
      " 'name': 'Add worksheet',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': '# Open Excel\\n'\n",
      "            'excel = Excel()\\n'\n",
      "            '# Add a worksheet\\n'\n",
      "            \"excel.add_worksheet('My Example Worksheet')\\n\"}\n",
      "{'description': 'Activate a worksheet in the current Excel document by name',\n",
      " 'example': '>>> # Open Excel   \\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            '>>> # Add the first worksheet\\n'\n",
      "            \">>> excel.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '>>> # Add another worksheet\\n'\n",
      "            \">>> excel.add_worksheet('Another Worksheet')\\n\"\n",
      "            '>>> # Activate the first worksheet\\n'\n",
      "            \">>> excel.activate_worksheet('My Example Worksheet)\\n\",\n",
      " 'function_call': 'activate_worksheet(name)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel',\n",
      "              'activate worksheet',\n",
      "              'set worksheet',\n",
      "              'select worksheet',\n",
      "              'select tab',\n",
      "              'activate tab'],\n",
      " 'name': 'Activate worksheet',\n",
      " 'parameters': [{'description': ' Name of the worksheet to activate\\n',\n",
      "                 'name': ' name'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open Excel   \\n'\n",
      "            'excel = Excel()\\n'\n",
      "            '# Add the first worksheet\\n'\n",
      "            \"excel.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '# Add another worksheet\\n'\n",
      "            \"excel.add_worksheet('Another Worksheet')\\n\"\n",
      "            '# Activate the first worksheet\\n'\n",
      "            \"excel.activate_worksheet('My Example Worksheet)\\n\"}\n",
      "{'description': 'Save the current workbook. Defaults to homedir',\n",
      " 'example': '>>> # Open Excel\\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            '>>> # Add the first worksheet\\n'\n",
      "            \">>> excel.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '>>> # Save the workbook\\n'\n",
      "            '>>> excel.save()\\n',\n",
      " 'function_call': 'save(self)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'save', 'store'],\n",
      " 'name': 'Save',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': '# Open Excel\\n'\n",
      "            'excel = Excel()\\n'\n",
      "            '# Add the first worksheet\\n'\n",
      "            \"excel.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '# Save the workbook\\n'\n",
      "            'excel.save()\\n'}\n",
      "{'description': 'Save the current workbook to a specific path',\n",
      " 'example': '>>> # Open Excel\\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            '>>> # Add the first worksheet\\n'\n",
      "            \">>> excel.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '>>> # Save the workbook to the current working directory\\n'\n",
      "            \">>> excel.save_as('output.xlsx')\\n\",\n",
      " 'function_call': 'save_as(output_path)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'save as', 'export'],\n",
      " 'name': 'Save as',\n",
      " 'parameters': [{'description': ' Path where workbook will be saved.\\n',\n",
      "                 'name': ' output_path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open Excel\\n'\n",
      "            'excel = Excel()\\n'\n",
      "            '# Add the first worksheet\\n'\n",
      "            \"excel.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '# Save the workbook to the current working directory\\n'\n",
      "            \"excel.save_as('output.xlsx')\\n\"}\n",
      "{'description': 'Write to a specific cell in the currently active workbook and '\n",
      "                'active worksheet',\n",
      " 'example': '>>> # Open Excel\\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            '>>> # Add the first worksheet\\n'\n",
      "            \">>> excel.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '>>> # Insert a text into the first cell\\n'\n",
      "            \">>> excel.write_cell(1,1, 'Hello World!')\\n\",\n",
      " 'function_call': 'write_cell(column, row, value)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'cell', 'insert cell', 'insert data'],\n",
      " 'name': 'Write cell',\n",
      " 'parameters': [{'description': ' Column number (integer) to write\\n',\n",
      "                 'name': ' column'},\n",
      "                {'description': ' Row number (integer) to write\\n',\n",
      "                 'name': ' row'},\n",
      "                {'description': ' Value to write to specific cell\\n',\n",
      "                 'name': ' value'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open Excel\\n'\n",
      "            'excel = Excel()\\n'\n",
      "            '# Add the first worksheet\\n'\n",
      "            \"excel.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '# Insert a text into the first cell\\n'\n",
      "            \"excel.write_cell(1,1, 'Hello World!')\\n\"}\n",
      "{'description': 'Read a cell from the currently active workbook and active '\n",
      "                'worksheet',\n",
      " 'example': '>>> # Open Excel\\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            '>>> # Add the first worksheet\\n'\n",
      "            \">>> excel.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '>>> # Insert a text into the first cell\\n'\n",
      "            \">>> excel.write_cell(1,1, 'Hello World!')\\n\"\n",
      "            '>>> excel.read_cell(1,1)\\n'\n",
      "            \"'Hello World!'\\n\",\n",
      " 'function_call': 'read_cell(column, row)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'cell', 'read cell', 'read data'],\n",
      " 'name': 'Read cell',\n",
      " 'parameters': [{'description': ' Column number (integer) to read\\n',\n",
      "                 'name': ' column'},\n",
      "                {'description': ' Row number (integer) to read\\n',\n",
      "                 'name': ' row'}],\n",
      " 'return': ' Cell value\\n',\n",
      " 'snippet': '# Open Excel\\n'\n",
      "            'excel = Excel()\\n'\n",
      "            '# Add the first worksheet\\n'\n",
      "            \"excel.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '# Insert a text into the first cell\\n'\n",
      "            \"excel.write_cell(1,1, 'Hello World!')\\n\"\n",
      "            'excel.read_cell(1,1)\\n'}\n",
      "{'description': 'Write to a specific range in the currently active worksheet '\n",
      "                'in the active workbook',\n",
      " 'example': '>>> # Open Excel\\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            '>>> # Add the first worksheet\\n'\n",
      "            \">>> excel.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '>>> # Insert a text in every cell in this range\\n'\n",
      "            \">>> excel.write_range('A1:D5', 'Hello World!')\\n\",\n",
      " 'function_call': 'write_range(range_, value)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'cell', 'write range', 'read data'],\n",
      " 'name': 'Write range',\n",
      " 'parameters': [{'description': ' Range to write to, e.g. \"A1:D10\"\\n',\n",
      "                 'name': ' range_'},\n",
      "                {'description': ' Value to write to range\\n',\n",
      "                 'name': ' value'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open Excel\\n'\n",
      "            'excel = Excel()\\n'\n",
      "            '# Add the first worksheet\\n'\n",
      "            \"excel.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '# Insert a text in every cell in this range\\n'\n",
      "            \"excel.write_range('A1:D5', 'Hello World!')\\n\"}\n",
      "{'description': 'Read a range of cells from the currently active worksheet in '\n",
      "                'the active workbook',\n",
      " 'example': '>>> # Open Excel\\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            '>>> # Add the first worksheet\\n'\n",
      "            \">>> excel.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '>>> # Insert a text in every cell in this range\\n'\n",
      "            \">>> excel.write_range('A1:D5', 'Hello World!')\\n\"\n",
      "            '>>> # Read the same range\\n'\n",
      "            \">>> excel.read_range('A1:D5')\\n\"\n",
      "            \"[['Hello World', 'Hello World', 'Hello World', 'Hello World'], \"\n",
      "            '...]\\n',\n",
      " 'function_call': 'read_range(range_)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'cell', 'read range', 'read data'],\n",
      " 'name': 'Read range',\n",
      " 'parameters': [{'description': ' Range to read from, e.g. \"A1:D10\"\\n',\n",
      "                 'name': ' range_'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open Excel\\n'\n",
      "            'excel = Excel()\\n'\n",
      "            '# Add the first worksheet\\n'\n",
      "            \"excel.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '# Insert a text in every cell in this range\\n'\n",
      "            \"excel.write_range('A1:D5', 'Hello World!')\\n\"\n",
      "            '# Read the same range\\n'\n",
      "            \"excel.read_range('A1:D5')\\n\"}\n",
      "{'description': 'Run a macro by name from the currently active workbook',\n",
      " 'example': \">>> excel = Excel('excel_with_macro.xlsx')\\n\"\n",
      "            '>>> # Run the macro\\n'\n",
      "            \">>> excel.run_macro('Macro1')\\n\",\n",
      " 'function_call': 'run_macro(name)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'run macro', 'run vba'],\n",
      " 'name': 'Run macro',\n",
      " 'parameters': [{'description': ' Name of the macro to run. \\n',\n",
      "                 'name': ' name'}],\n",
      " 'return': '',\n",
      " 'snippet': \"excel = Excel('excel_with_macro.xlsx')\\n\"\n",
      "            '# Run the macro\\n'\n",
      "            \"excel.run_macro('Macro1')\\n\"}\n",
      "{'description': 'Get names of all the worksheets in the currently active '\n",
      "                'workbook',\n",
      " 'example': '>>> # Open Excel\\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            '>>> # Add a worksheet\\n'\n",
      "            \">>> excel.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '>>> # Get all worksheet names\\n'\n",
      "            '>>> excel.get_worksheet_names()\\n'\n",
      "            \"['Sheet1', 'My Example Worksheet']\\n\",\n",
      " 'function_call': 'get_worksheet_names(self)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'worksheet names', 'tab names'],\n",
      " 'name': 'Get worksheet names',\n",
      " 'parameters': [],\n",
      " 'return': ' List of worksheet names\\n',\n",
      " 'snippet': '# Open Excel\\n'\n",
      "            'excel = Excel()\\n'\n",
      "            '# Add a worksheet\\n'\n",
      "            \"excel.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '# Get all worksheet names\\n'\n",
      "            'excel.get_worksheet_names()\\n'}\n",
      "{'description': 'Get table data from the currently active worksheet by name of '\n",
      "                'the table',\n",
      " 'example': '>>> # Open Excel\\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            '>>> # Create a table (Table1)\\n'\n",
      "            '>>> data = [\\n'\n",
      "            '    {\\n'\n",
      "            \"        'Column A': 'Data Row 1 for A',\\n\"\n",
      "            \"        'Column B': 'Data Row 1 for B',\\n\"\n",
      "            \"        'Column C': 'Data Row 1 for C',\\n\"\n",
      "            '    },\\n'\n",
      "            '    {\\n'\n",
      "            \"        'Column A': 'Data Row 2 for A',\\n\"\n",
      "            \"        'Column B': 'Data Row 2 for B',\\n\"\n",
      "            \"        'Column C': 'Data Row 2 for C',\\n\"\n",
      "            '    }]\\n'\n",
      "            '>>> excel.insert_data_as_table(data)\\n'\n",
      "            '>>> # Get the table\\n'\n",
      "            \">>> excel.get_table('Table1')\\n\"\n",
      "            \"[['Column A', 'Column B', 'Column C'], ['Row 1 A Data', 'Row 1 B \"\n",
      "            \"Data', 'Row 1 C Data'], ...]\\n\",\n",
      " 'function_call': 'get_table(name)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'worksheet names', 'tab names'],\n",
      " 'name': 'Get table',\n",
      " 'parameters': [{'description': ' Table name\\n', 'name': ' name'}],\n",
      " 'return': ' List of dictionaries for each row with as key the column name\\n',\n",
      " 'snippet': '# Open Excel\\n'\n",
      "            'excel = Excel()\\n'\n",
      "            '# Create a table (Table1)\\n'\n",
      "            'data = [\\n'\n",
      "            '    {\\n'\n",
      "            \"        'Column A': 'Data Row 1 for A',\\n\"\n",
      "            \"        'Column B': 'Data Row 1 for B',\\n\"\n",
      "            \"        'Column C': 'Data Row 1 for C',\\n\"\n",
      "            '    },\\n'\n",
      "            '    {\\n'\n",
      "            \"        'Column A': 'Data Row 2 for A',\\n\"\n",
      "            \"        'Column B': 'Data Row 2 for B',\\n\"\n",
      "            \"        'Column C': 'Data Row 2 for C',\\n\"\n",
      "            '    }]\\n'\n",
      "            'excel.insert_data_as_table(data)\\n'\n",
      "            '# Get the table\\n'\n",
      "            \"excel.get_table('Table1')\\n\"}\n",
      "{'description': 'Activate a particular range in the currently active workbook',\n",
      " 'example': '>>> # Open Excel\\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            '>>> # Activate a cell range\\n'\n",
      "            \">>> excel.activate_range('A1:D5')\\n\",\n",
      " 'function_call': 'activate_range(range_)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel',\n",
      "              'activate range',\n",
      "              'make selection',\n",
      "              'select cells',\n",
      "              'select range'],\n",
      " 'name': 'Activate range',\n",
      " 'parameters': [{'description': ' Range to activate, e.g. \"A1:D10\"\\n',\n",
      "                 'name': ' range_'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open Excel\\n'\n",
      "            'excel = Excel()\\n'\n",
      "            '# Activate a cell range\\n'\n",
      "            \"excel.activate_range('A1:D5')\\n\"}\n",
      "{'description': 'Activates the first empty cell going down',\n",
      " 'example': '>>> # Open Excel\\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            '>>> # Write some cells\\n'\n",
      "            \">>> excel.write_cell(1, 1, 'Filled')\\n\"\n",
      "            \">>> excel.write_cell(1, 2, 'Filled')\\n\"\n",
      "            \">>> excel.write_cell(1, 3, 'Filled')\\n\"\n",
      "            '>>> # Activate the first empty cell going down, in this case cell '\n",
      "            'A4 or (1,4)\\n'\n",
      "            '>>> excel.activate_first_empty_cell_down()\\n',\n",
      " 'function_call': 'activate_first_empty_cell_down(self)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'first empty cell', 'down'],\n",
      " 'name': 'Activate first empty cell down',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': '# Open Excel\\n'\n",
      "            'excel = Excel()\\n'\n",
      "            '# Write some cells\\n'\n",
      "            \"excel.write_cell(1, 1, 'Filled')\\n\"\n",
      "            \"excel.write_cell(1, 2, 'Filled')\\n\"\n",
      "            \"excel.write_cell(1, 3, 'Filled')\\n\"\n",
      "            '# Activate the first empty cell going down, in this case cell A4 '\n",
      "            'or (1,4)\\n'\n",
      "            'excel.activate_first_empty_cell_down()\\n'}\n",
      "{'description': 'Activates the first empty cell going right',\n",
      " 'example': '>>> # Open Excel\\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            '>>> # Write some cells\\n'\n",
      "            \">>> excel.write_cell(1, 1, 'Filled')\\n\"\n",
      "            \">>> excel.write_cell(1, 2, 'Filled')\\n\"\n",
      "            \">>> excel.write_cell(1, 3, 'Filled')\\n\"\n",
      "            '>>> # Activate the first empty cell going right, in this case '\n",
      "            'cell B1 or (2,1)\\n'\n",
      "            '>>> excel.activate_first_empty_cell_right()\\n',\n",
      " 'function_call': 'activate_first_empty_cell_right(self)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'first empty cell', 'right'],\n",
      " 'name': 'Activate first empty cell right',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': '# Open Excel\\n'\n",
      "            'excel = Excel()\\n'\n",
      "            '# Write some cells\\n'\n",
      "            \"excel.write_cell(1, 1, 'Filled')\\n\"\n",
      "            \"excel.write_cell(1, 2, 'Filled')\\n\"\n",
      "            \"excel.write_cell(1, 3, 'Filled')\\n\"\n",
      "            '# Activate the first empty cell going right, in this case cell B1 '\n",
      "            'or (2,1)\\n'\n",
      "            'excel.activate_first_empty_cell_right()\\n'}\n",
      "{'description': 'Activates the first empty cell going left',\n",
      " 'example': '>>> # Open Excel\\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            \">>> excel.write_cell(1, 1, 'Filled')\\n\"\n",
      "            \">>> excel.write_cell(1, 2, 'Filled')\\n\"\n",
      "            \">>> excel.write_cell(1, 3, 'Filled')\\n\"\n",
      "            '>>> excel.activate_first_empty_cell_left()\\n',\n",
      " 'function_call': 'activate_first_empty_cell_left(self)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'first empty cell', 'left'],\n",
      " 'name': 'Activate first empty cell left',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': '# Open Excel\\n'\n",
      "            'excel = Excel()\\n'\n",
      "            \"excel.write_cell(1, 1, 'Filled')\\n\"\n",
      "            \"excel.write_cell(1, 2, 'Filled')\\n\"\n",
      "            \"excel.write_cell(1, 3, 'Filled')\\n\"\n",
      "            'excel.activate_first_empty_cell_left()\\n'}\n",
      "{'description': 'Activates the first empty cell going up',\n",
      " 'example': '>>> # Open Excel\\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            '>>> # Write some cells\\n'\n",
      "            \">>> excel.write_cell(1, 1, 'Filled')\\n\"\n",
      "            \">>> excel.write_cell(1, 2, 'Filled')\\n\"\n",
      "            \">>> excel.write_cell(1, 3, 'Filled')\\n\"\n",
      "            '>>> # Activate first empty cell\\n'\n",
      "            '>>> excel.activate_first_empty_cell_up()\\n',\n",
      " 'function_call': 'activate_first_empty_cell_up(self)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'first empty cell', 'up'],\n",
      " 'name': 'Activate first empty cell up',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': '# Open Excel\\n'\n",
      "            'excel = Excel()\\n'\n",
      "            '# Write some cells\\n'\n",
      "            \"excel.write_cell(1, 1, 'Filled')\\n\"\n",
      "            \"excel.write_cell(1, 2, 'Filled')\\n\"\n",
      "            \"excel.write_cell(1, 3, 'Filled')\\n\"\n",
      "            '# Activate first empty cell\\n'\n",
      "            'excel.activate_first_empty_cell_up()\\n'}\n",
      "{'description': 'Write a formula to a particular cell',\n",
      " 'example': '>>> # Open Excel\\n'\n",
      "            '>>> excel = Excel()\\n'\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            '>>> # Write a formula to the first cell\\n'\n",
      "            \">>> excel.write_cell_formula(1, 1, '=1+1)\\n\",\n",
      " 'function_call': 'write_cell_formula(column, row, formula)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel',\n",
      "              'insert formula',\n",
      "              'insert calculation',\n",
      "              'insert calculated cell'],\n",
      " 'name': 'Write cell formula',\n",
      " 'parameters': [{'description': ' Column number to write formula\\n',\n",
      "                 'name': ' column'},\n",
      "                {'description': ' Row number to write formula\\n',\n",
      "                 'name': ' row'},\n",
      "                {'description': ' Formula to write to specific cell e.g. '\n",
      "                                '\"=10*RAND()\"\\n',\n",
      "                 'name': ' value'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open Excel\\n'\n",
      "            'excel = Excel()\\n'\n",
      "            '# Write a formula to the first cell\\n'\n",
      "            \"excel.write_cell_formula(1, 1, '=1+1)\\n\"}\n",
      "{'description': 'Read the formula from a particular cell',\n",
      " 'example': '>>> # Open Excel\\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            '>>> # Write a formula to the first cell\\n'\n",
      "            \">>> excel.write_cell_formula(1, 1, '=1+1)\\n\"\n",
      "            '>>> # Read the cell\\n'\n",
      "            '>>> excel.read_cell_formula(1, 1)\\n'\n",
      "            \"'=1+1'\\n\",\n",
      " 'function_call': 'read_cell_formula(column, row, formula)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'read formula', 'read calculation'],\n",
      " 'name': 'Read cell formula',\n",
      " 'parameters': [{'description': ' Column number to read formula\\n',\n",
      "                 'name': ' column'},\n",
      "                {'description': ' Row number to read formula\\n',\n",
      "                 'name': ' row'}],\n",
      " 'return': ' Cell value\\n',\n",
      " 'snippet': '# Open Excel\\n'\n",
      "            'excel = Excel()\\n'\n",
      "            '# Write a formula to the first cell\\n'\n",
      "            \"excel.write_cell_formula(1, 1, '=1+1)\\n\"\n",
      "            '# Read the cell\\n'\n",
      "            'excel.read_cell_formula(1, 1)\\n'}\n",
      "{'description': 'Inserts an empty row to the currently active worksheet',\n",
      " 'example': '>>> # Open Excel              \\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            \">>> excel.write_cell(1, 1, 'Filled')\\n\"\n",
      "            \">>> excel.write_cell(1, 2, 'Filled')\\n\"\n",
      "            \">>> excel.write_cell(1, 3, 'Filled')\\n\"\n",
      "            '>>> excel.insert_empty_row(2)\\n',\n",
      " 'function_call': 'insert_empty_row(row)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'insert row', 'add row', 'empty row'],\n",
      " 'name': 'Insert empty row',\n",
      " 'parameters': [{'description': ' Row number where to insert empty row e.g 1\\n',\n",
      "                 'name': ' row'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open Excel              \\n'\n",
      "            'excel = Excel()\\n'\n",
      "            \"excel.write_cell(1, 1, 'Filled')\\n\"\n",
      "            \"excel.write_cell(1, 2, 'Filled')\\n\"\n",
      "            \"excel.write_cell(1, 3, 'Filled')\\n\"\n",
      "            'excel.insert_empty_row(2)\\n'}\n",
      "{'description': 'Inserts an empty column in the currently active worksheet. '\n",
      "                'Existing columns will shift to the right.',\n",
      " 'example': '>>> # Open Excel\\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            \">>> excel.write_cell(1, 1, 'Filled')\\n\"\n",
      "            \">>> excel.write_cell(2, 2, 'Filled')\\n\"\n",
      "            \">>> excel.write_cell(3, 3, 'Filled')\\n\"\n",
      "            \">>> excel.insert_empty_column('A')\\n\",\n",
      " 'function_call': 'insert_empty_column(column)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'insert column', 'add column'],\n",
      " 'name': 'Insert empty column',\n",
      " 'parameters': [{'description': ' Column letter where to insert empty column '\n",
      "                                \"e.g. 'A'\\n\",\n",
      "                 'name': ' column'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open Excel\\n'\n",
      "            'excel = Excel()\\n'\n",
      "            \"excel.write_cell(1, 1, 'Filled')\\n\"\n",
      "            \"excel.write_cell(2, 2, 'Filled')\\n\"\n",
      "            \"excel.write_cell(3, 3, 'Filled')\\n\"\n",
      "            \"excel.insert_empty_column('A')\\n\"}\n",
      "{'description': 'Deletes a row from the currently active worksheet. Existing '\n",
      "                'data will shift up.',\n",
      " 'example': '>>> # Open Excel              \\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            \">>> excel.write_cell(1, 1, 'Filled')\\n\"\n",
      "            \">>> excel.write_cell(2, 2, 'Filled')\\n\"\n",
      "            \">>> excel.write_cell(3, 3, 'Filled')\\n\"\n",
      "            '>>> excel.delete_row(2)\\n',\n",
      " 'function_call': 'delete_row(row)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'delete row', 'remove row'],\n",
      " 'name': 'Delete row in Excel',\n",
      " 'parameters': [{'description': ' Row number (integer) where to delete row e.g '\n",
      "                                '1\\n',\n",
      "                 'name': ' row'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open Excel              \\n'\n",
      "            'excel = Excel()\\n'\n",
      "            \"excel.write_cell(1, 1, 'Filled')\\n\"\n",
      "            \"excel.write_cell(2, 2, 'Filled')\\n\"\n",
      "            \"excel.write_cell(3, 3, 'Filled')\\n\"\n",
      "            'excel.delete_row(2)\\n'}\n",
      "{'description': 'Delete a column from the currently active worksheet. Existing '\n",
      "                'columns will shift to the left.',\n",
      " 'example': '>>> # Open Excel              \\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            \">>> excel.write_cell(1, 1, 'Filled')\\n\"\n",
      "            \">>> excel.write_cell(2, 2, 'Filled')\\n\"\n",
      "            \">>> excel.write_cell(3, 3, 'Filled')\\n\"\n",
      "            \">>> excel.delete_column('A')\\n\",\n",
      " 'function_call': 'delete_column(column)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'delete column', 'remove column'],\n",
      " 'name': 'Delete column',\n",
      " 'parameters': [{'description': ' Column letter (string) where to delete  '\n",
      "                                \"column e.g. 'A'\\n\",\n",
      "                 'name': ' column'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open Excel              \\n'\n",
      "            'excel = Excel()\\n'\n",
      "            \"excel.write_cell(1, 1, 'Filled')\\n\"\n",
      "            \"excel.write_cell(2, 2, 'Filled')\\n\"\n",
      "            \"excel.write_cell(3, 3, 'Filled')\\n\"\n",
      "            \"excel.delete_column('A')\\n\"}\n",
      "{'description': 'Export to PDF',\n",
      " 'example': '>>> # Open Excel              \\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            \">>> excel.write_cell(1, 1, 'Filled')\\n\"\n",
      "            \">>> excel.write_cell(2, 2, 'Filled')\\n\"\n",
      "            \">>> excel.write_cell(3, 3, 'Filled')\\n\"\n",
      "            \">>> excel.export_to_pdf('output.pdf')\\n\",\n",
      " 'function_call': 'export_to_pdf(output_path=None)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'save as pdf', 'export to pdf', 'export as pdf'],\n",
      " 'name': 'Export to PDF',\n",
      " 'parameters': [{'description': ' Output path where PDF file will be exported '\n",
      "                                'to. Default path is home directory with '\n",
      "                                \"filename 'pdf_export.pdf'.\\n\",\n",
      "                 'name': ' path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open Excel              \\n'\n",
      "            'excel = Excel()\\n'\n",
      "            \"excel.write_cell(1, 1, 'Filled')\\n\"\n",
      "            \"excel.write_cell(2, 2, 'Filled')\\n\"\n",
      "            \"excel.write_cell(3, 3, 'Filled')\\n\"\n",
      "            \"excel.export_to_pdf('output.pdf')\\n\"}\n",
      "{'description': '\"\"\"Insert data as table',\n",
      " 'example': '>>> excel = Excel()\\n'\n",
      "            '>>> data = [\\n'\n",
      "            '    {\\n'\n",
      "            \"        'Column A': 'Data Row 1 for A',\\n\"\n",
      "            \"        'Column B': 'Data Row 1 for B',\\n\"\n",
      "            \"        'Column C': 'Data Row 1 for C',\\n\"\n",
      "            '    },\\n'\n",
      "            '    {\\n'\n",
      "            \"        'Column A': 'Data Row 2 for A',\\n\"\n",
      "            \"        'Column B': 'Data Row 2 for B',\\n\"\n",
      "            \"        'Column C': 'Data Row 2 for C',\\n\"\n",
      "            '    }\\n'\n",
      "            '>>> excel.insert_data_as_table(data)\\n',\n",
      " 'function_call': 'insert_data_as_table(',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'insert data', 'insert table', 'create table'],\n",
      " 'name': 'self, data, range_=\"A1\", table_style=\"TableStyleMedium2\"',\n",
      " 'parameters': [{'description': ' List of dictionaries to write as table\\n',\n",
      "                 'name': ' data'},\n",
      "                {'description': \" Range or startingpoint for table e.g. 'A1'\\n\",\n",
      "                 'name': ' range_'}],\n",
      " 'return': '',\n",
      " 'snippet': 'excel = Excel()\\n'\n",
      "            'data = [\\n'\n",
      "            '    {\\n'\n",
      "            \"        'Column A': 'Data Row 1 for A',\\n\"\n",
      "            \"        'Column B': 'Data Row 1 for B',\\n\"\n",
      "            \"        'Column C': 'Data Row 1 for C',\\n\"\n",
      "            '    },\\n'\n",
      "            '    {\\n'\n",
      "            \"        'Column A': 'Data Row 2 for A',\\n\"\n",
      "            \"        'Column B': 'Data Row 2 for B',\\n\"\n",
      "            \"        'Column C': 'Data Row 2 for C',\\n\"\n",
      "            '    }\\n'\n",
      "            'excel.insert_data_as_table(data)\\n'}\n",
      "{'description': 'Read data from a worksheet as a list of lists',\n",
      " 'example': '>>> # Open excel    \\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            '>>> Write some cells\\n'\n",
      "            \">>> excel.write_cell(1, 1, 'A')\\n\"\n",
      "            \">>> excel.write_cell(1, 2, 'B')\\n\"\n",
      "            \">>> excel.write_cell(1, 3, 'C')\\n\"\n",
      "            '>>> excel.read_worksheet()\\n'\n",
      "            \"[['A'],['B'],['C']]\\n\",\n",
      " 'function_call': 'read_worksheet(name=None, headers=False)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'read worksheet', 'export data', 'read data'],\n",
      " 'name': 'Read worksheet',\n",
      " 'parameters': [{'description': ' Optional name of worksheet to read. If no '\n",
      "                                'name is specified will take active sheet\\n',\n",
      "                 'name': ' name'},\n",
      "                {'description': ' Boolean to treat first row as headers. '\n",
      "                                'Default value is False\\n',\n",
      "                 'name': ' headers'}],\n",
      " 'return': ' List of dictionaries with sheet data\\n',\n",
      " 'snippet': '# Open excel    \\n'\n",
      "            'excel = Excel()\\n'\n",
      "            'Write some cells\\n'\n",
      "            \"excel.write_cell(1, 1, 'A')\\n\"\n",
      "            \"excel.write_cell(1, 2, 'B')\\n\"\n",
      "            \"excel.write_cell(1, 3, 'C')\\n\"\n",
      "            'excel.read_worksheet()\\n'}\n",
      "{'description': \"This closes Excel, make sure to use 'save' or 'save_as' if \"\n",
      "                'you would like to save before quitting.',\n",
      " 'example': '>>> # Open Excel  \\n'\n",
      "            '>>> excel = Excel()\\n'\n",
      "            '>>> # Quit Excel\\n'\n",
      "            '>>> excel.quit()\\n',\n",
      " 'function_call': 'quit(self)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'exit', 'quit', 'close'],\n",
      " 'name': 'Quit Excel',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': '# Open Excel  \\nexcel = Excel()\\n# Quit Excel\\nexcel.quit()\\n'}\n",
      "{'description': 'This activity can read, write and edit Excel (xlsx) files '\n",
      "                'without the need of having Excel installed.Note that, in '\n",
      "                \"contrary to working with the :func: 'Excel' activities, a \"\n",
      "                'file get saved directly after manipulation.',\n",
      " 'example': '>>> # Open a new Excel file\\n>>> excel_file = ExcelFile()\\n',\n",
      " 'function_call': 'ExcelFile(file_path=None)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'open', 'start', 'xlsx'],\n",
      " 'name': 'Read and Write xlsx files.',\n",
      " 'parameters': [{'description': ' Enter a path to open Excel with an existing '\n",
      "                                'Excel file. If no path is specified a '\n",
      "                                \"'workbook.xlsx' will be initialized in the \"\n",
      "                                'home directory, this is the default value. If '\n",
      "                                'a workbook with the same name already exists '\n",
      "                                'the file will be overwritten.\\n',\n",
      "                 'name': ' file_path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open a new Excel file\\nexcel_file = ExcelFile()\\n'}\n",
      "{'description': 'Export to pandas dataframe',\n",
      " 'example': '>>> # Open a new Excel file\\n'\n",
      "            '>>> excel_file = ExcelFile()\\n'\n",
      "            '>>> # Convert to Dataframe\\n'\n",
      "            '>>> df = excel_file.to_dataframe()\\n',\n",
      " 'function_call': 'to_dataframe(self)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'open', 'start', 'xlsx', 'dataframe,'],\n",
      " 'name': 'Export file to dataframe',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': '# Open a new Excel file\\n'\n",
      "            'excel_file = ExcelFile()\\n'\n",
      "            '# Convert to Dataframe\\n'\n",
      "            'df = excel_file.to_dataframe()\\n'}\n",
      "{'description': 'Activate a worksheet. By default the first worksheet is '\n",
      "                'activated.',\n",
      " 'example': '>>> # Open a new Excel file\\n'\n",
      "            '>>> excel_file = ExcelFile()\\n'\n",
      "            '>>> # Add some worksheets\\n'\n",
      "            \">>> excel_file.add_worksheet('My Example Worksheet')\\n\"\n",
      "            \">>> excel_file.add_worksheet('Another Worksheet')\\n\"\n",
      "            '>>> # Activate a worksheet\\n'\n",
      "            \">>> excel_file.activate_worksheet('My Example Worksheet')\\n\",\n",
      " 'function_call': 'activate_worksheet(name)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'activate tab', 'activate worksheet'],\n",
      " 'name': 'Activate worksheet',\n",
      " 'parameters': [{'description': ' Name of the worksheet to activate.        \\n',\n",
      "                 'name': ' name'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open a new Excel file\\n'\n",
      "            'excel_file = ExcelFile()\\n'\n",
      "            '# Add some worksheets\\n'\n",
      "            \"excel_file.add_worksheet('My Example Worksheet')\\n\"\n",
      "            \"excel_file.add_worksheet('Another Worksheet')\\n\"\n",
      "            '# Activate a worksheet\\n'\n",
      "            \"excel_file.activate_worksheet('My Example Worksheet')\\n\"}\n",
      "{'description': 'Save file as',\n",
      " 'example': '>>> # Open a new Excel file\\n'\n",
      "            '>>> excel_file = ExcelFile()\\n'\n",
      "            '>>> # Ad a worksheet\\n'\n",
      "            \">>> excel_file.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '>>> # Save the Excel file\\n'\n",
      "            \">>> excel_file.save_as('output.xlsx')\\n\",\n",
      " 'function_call': 'save_as(output_path)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'save as', 'export', 'save'],\n",
      " 'name': 'Save as',\n",
      " 'parameters': [{'description': ' Path where workbook will be saved\\n',\n",
      "                 'name': ' file_path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open a new Excel file\\n'\n",
      "            'excel_file = ExcelFile()\\n'\n",
      "            '# Ad a worksheet\\n'\n",
      "            \"excel_file.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '# Save the Excel file\\n'\n",
      "            \"excel_file.save_as('output.xlsx')\\n\"}\n",
      "{'description': 'Save file',\n",
      " 'example': '>>> # Open a new Excel file\\n'\n",
      "            '>>> excel_file = ExcelFile()\\n'\n",
      "            '>>> # Ad a worksheet\\n'\n",
      "            \">>> excel_file.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '>>> # Save the Excel file\\n'\n",
      "            '>>> excel_file.save()\\n',\n",
      " 'function_call': 'save(self)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'save as', 'export', 'save'],\n",
      " 'name': 'Save as',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': '# Open a new Excel file\\n'\n",
      "            'excel_file = ExcelFile()\\n'\n",
      "            '# Ad a worksheet\\n'\n",
      "            \"excel_file.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '# Save the Excel file\\n'\n",
      "            'excel_file.save()\\n'}\n",
      "{'description': 'Write a cell based on column and row',\n",
      " 'example': '>>> # Open a new Excel file\\n'\n",
      "            '>>> excel_file = ExcelFile()\\n'\n",
      "            '>>> # Add a worksheet\\n'\n",
      "            \">>> excel_file.add_worksheet('My Example Worksheet')\\n\"\n",
      "            \">>> excel_file.write_cell(1, 1, 'Filled!')\\n\",\n",
      " 'function_call': 'write_cell(column, row, value, auto_save=True)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'write cell', 'insert data'],\n",
      " 'name': 'Write cell',\n",
      " 'parameters': [{'description': ' Column number (integer) to write\\n',\n",
      "                 'name': ' column'},\n",
      "                {'description': ' Row number (integer) to write\\n',\n",
      "                 'name': ' row'},\n",
      "                {'description': ' Value to write to specific cell\\n',\n",
      "                 'name': ' value'},\n",
      "                {'description': ' Save document after performing activity. '\n",
      "                                'Default value is True\\n',\n",
      "                 'name': ' auto_save'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open a new Excel file\\n'\n",
      "            'excel_file = ExcelFile()\\n'\n",
      "            '# Add a worksheet\\n'\n",
      "            \"excel_file.add_worksheet('My Example Worksheet')\\n\"\n",
      "            \"excel_file.write_cell(1, 1, 'Filled!')\\n\"}\n",
      "{'description': 'Read a cell based on column and row',\n",
      " 'example': '>>> # Open a new Excel file\\n'\n",
      "            '>>> excel_file = ExcelFile()\\n'\n",
      "            '>>> # Add a worksheet\\n'\n",
      "            \">>> excel_file.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '>>> # Write the first cell\\n'\n",
      "            \">>> excel_file.write_cell(1, 1, 'Filled!')\\n\"\n",
      "            '>>> # Read the first cell\\n'\n",
      "            '>>> excel_file.read_cell(1, 1)\\n'\n",
      "            \"'Filled!'\\n\",\n",
      " 'function_call': 'read_cell(column, row)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'read cell', 'read'],\n",
      " 'name': 'Read cell',\n",
      " 'parameters': [{'description': ' Column number (integer) to read\\n',\n",
      "                 'name': ' column'},\n",
      "                {'description': ' Row number (integer) to read\\n',\n",
      "                 'name': ' row'}],\n",
      " 'return': ' Cell value\\n',\n",
      " 'snippet': '# Open a new Excel file\\n'\n",
      "            'excel_file = ExcelFile()\\n'\n",
      "            '# Add a worksheet\\n'\n",
      "            \"excel_file.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '# Write the first cell\\n'\n",
      "            \"excel_file.write_cell(1, 1, 'Filled!')\\n\"\n",
      "            '# Read the first cell\\n'\n",
      "            'excel_file.read_cell(1, 1)\\n'}\n",
      "{'description': 'Add a worksheet',\n",
      " 'example': '>>> # Open a new Excel file\\n'\n",
      "            '>>> excel_file = ExcelFile()\\n'\n",
      "            '>>> # Add a worksheet\\n'\n",
      "            \">>> excel_file.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '>>> # List all the worksheets\\n'\n",
      "            '>>> excel.get_worksheet_names()\\n',\n",
      " 'function_call': 'add_worksheet(name, auto_save=True)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'add worksheet', 'worksheet'],\n",
      " 'name': 'Add worksheet',\n",
      " 'parameters': [{'description': ' Name of the worksheet to add\\n',\n",
      "                 'name': ' name'},\n",
      "                {'description': ' Save document after performing activity. '\n",
      "                                'Default value is True\\n',\n",
      "                 'name': ' auto_save'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open a new Excel file\\n'\n",
      "            'excel_file = ExcelFile()\\n'\n",
      "            '# Add a worksheet\\n'\n",
      "            \"excel_file.add_worksheet('My Example Worksheet')\\n\"\n",
      "            '# List all the worksheets\\n'\n",
      "            'excel.get_worksheet_names()\\n'}\n",
      "{'description': 'Get worksheet names',\n",
      " 'example': '>>> # Open a new Excel file\\n'\n",
      "            '>>> excel_file = ExcelFile()\\n'\n",
      "            '>>> # Add some worksheets\\n'\n",
      "            \">>> excel_file.add_worksheet('My Example Worksheet')\\n\"\n",
      "            \">>> excel_file.add_worksheet('Another Worksheet')\\n\"\n",
      "            '>>> # Get the worksheet names\\n'\n",
      "            '>>> excel_file.get_worksheet_names()\\n'\n",
      "            \"['My Example Worksheet', 'Another Worksheet']\\n\",\n",
      " 'function_call': 'get_worksheet_names(self)',\n",
      " 'icon': 'las la-file-excel',\n",
      " 'keywords': ['excel', 'worksheet names', 'worksheet,'],\n",
      " 'name': 'Get worksheet names',\n",
      " 'parameters': [],\n",
      " 'return': ' List of worksheet names\\n',\n",
      " 'snippet': '# Open a new Excel file\\n'\n",
      "            'excel_file = ExcelFile()\\n'\n",
      "            '# Add some worksheets\\n'\n",
      "            \"excel_file.add_worksheet('My Example Worksheet')\\n\"\n",
      "            \"excel_file.add_worksheet('Another Worksheet')\\n\"\n",
      "            '# Get the worksheet names\\n'\n",
      "            'excel_file.get_worksheet_names()\\n'}\n",
      "{'description': 'For this activity to work, PowerPoint needs to be installed '\n",
      "                'on the system.',\n",
      " 'example': '>>> # Start PowerPoint\\n>>> powerpoint = PowerPoint()\\n',\n",
      " 'function_call': 'PowerPoint(file_path=None, visible=True, add_slide=True)',\n",
      " 'icon': 'las la-file-powerpoint',\n",
      " 'keywords': ['powerpoint', 'ppt'],\n",
      " 'name': 'Start PowerPoint Application',\n",
      " 'parameters': [{'description': ' Enter a path to open an existing PowerPoint '\n",
      "                                'presentation. If no path is specified a new '\n",
      "                                'presentation will be initialized, this is the '\n",
      "                                'default value.\\n',\n",
      "                 'name': ' file_path'},\n",
      "                {'description': ' Show PowerPoint in the foreground if True or '\n",
      "                                'hide if False, defaults to True.\\n',\n",
      "                 'name': ' visible'},\n",
      "                {'description': ' Add an initial empty slide when creating new '\n",
      "                                'PowerPointfile, this prevents errors since '\n",
      "                                'most manipulations require a non-empty '\n",
      "                                'presentation. Default value is True\\n',\n",
      "                 'name': ' add_slide'}],\n",
      " 'return': ' Application object (win32com.client)\\n',\n",
      " 'snippet': '# Start PowerPoint\\npowerpoint = PowerPoint()\\n'}\n",
      "{'description': 'Save PowerPoint Slidedeck',\n",
      " 'example': '>>> # Start PowerPoint\\n'\n",
      "            '>>> powerpoint = PowerPoint()\\n'\n",
      "            '>>> # Add a first slide\\n'\n",
      "            '>>> powerpoint.add_slide()\\n'\n",
      "            '>>> # Save the PowerPoint presentation\\n'\n",
      "            \">>> powerpoint.save_as('AmazingPresentation.pptx')\\n\",\n",
      " 'function_call': 'save_as(output_path)',\n",
      " 'icon': 'las la-file-powerpoint',\n",
      " 'keywords': ['powerpoint', 'ppt', 'save', 'save as', 'save powerpoint'],\n",
      " 'name': 'Save PowerPoint',\n",
      " 'parameters': [{'description': ' Save the PowerPoint presentation.\\n',\n",
      "                 'name': ' file_path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Start PowerPoint\\n'\n",
      "            'powerpoint = PowerPoint()\\n'\n",
      "            '# Add a first slide\\n'\n",
      "            'powerpoint.add_slide()\\n'\n",
      "            '# Save the PowerPoint presentation\\n'\n",
      "            \"powerpoint.save_as('AmazingPresentation.pptx')\\n\"}\n",
      "{'description': 'Save PowerPoint Slidedeck',\n",
      " 'example': '>>> # Start PowerPoint\\n'\n",
      "            '>>> powerpoint = PowerPoint()\\n'\n",
      "            '>>> # Add a first slide\\n'\n",
      "            '>>> powerpoint.add_slide()\\n'\n",
      "            '>>> # Save the PowerPoint presentation\\n'\n",
      "            \">>> powerpoint.save_as('AmazingPresentation.pptx')\\n\",\n",
      " 'function_call': 'save(self)',\n",
      " 'icon': 'las la-file-powerpoint',\n",
      " 'keywords': ['powerpoint', 'ppt', 'save', 'save as', 'save powerpoint'],\n",
      " 'name': 'Save PowerPoint',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': '# Start PowerPoint\\n'\n",
      "            'powerpoint = PowerPoint()\\n'\n",
      "            '# Add a first slide\\n'\n",
      "            'powerpoint.add_slide()\\n'\n",
      "            '# Save the PowerPoint presentation\\n'\n",
      "            \"powerpoint.save_as('AmazingPresentation.pptx')\\n\"}\n",
      "{'description': 'Close PowerPoint',\n",
      " 'example': '>>> # Start PowerPoint\\n'\n",
      "            '>>> powerpoint = PowerPoint()\\n'\n",
      "            '>>> # Close PowerPoint\\n'\n",
      "            '>>> powerpoint.quit()\\n',\n",
      " 'function_call': 'quit(self)',\n",
      " 'icon': 'las la-file-powerpoint',\n",
      " 'keywords': ['powerpoint', 'ppt', 'quit', 'exit'],\n",
      " 'name': 'Close PowerPoint Application',\n",
      " 'parameters': [{'description': ' Index where the slide should be inserted. '\n",
      "                                'Default value is as final slide.\\n',\n",
      "                 'name': ' index'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Start PowerPoint\\n'\n",
      "            'powerpoint = PowerPoint()\\n'\n",
      "            '# Close PowerPoint\\n'\n",
      "            'powerpoint.quit()\\n'}\n",
      "{'description': 'Adds slides to a presentation',\n",
      " 'example': '>>> # Start PowerPoint\\n'\n",
      "            '>>> powerpoint = PowerPoint()\\n'\n",
      "            '>>> # Add a first slide\\n'\n",
      "            '>>> powerpoint.add_slide()\\n',\n",
      " 'function_call': 'add_slide(index=None, type=\"blank\")',\n",
      " 'icon': 'las la-file-powerpoint',\n",
      " 'keywords': ['powerpoint', 'ppt', 'add', 'add slide  powerpoint', 'slides'],\n",
      " 'name': 'Add PowerPoint Slides',\n",
      " 'parameters': [{'description': ' Index where the slide should be inserted. '\n",
      "                                'Default value is as final slide.\\n',\n",
      "                 'name': ' index'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Start PowerPoint\\n'\n",
      "            'powerpoint = PowerPoint()\\n'\n",
      "            '# Add a first slide\\n'\n",
      "            'powerpoint.add_slide()\\n'}\n",
      "{'description': 'Returns the number of slides',\n",
      " 'example': '>>> # Start PowerPoint\\n'\n",
      "            '>>> powerpoint = PowerPoint()\\n'\n",
      "            '>>> # Add some slides\\n'\n",
      "            '>>> powerpoint.add_slide()\\n'\n",
      "            '>>> powerpoint.add_slide()\\n'\n",
      "            '>>> # Show number of slides\\n'\n",
      "            '>>> powerpoint.number_of_slides()\\n',\n",
      " 'function_call': 'number_of_slides(self)',\n",
      " 'icon': 'las la-file-powerpoint',\n",
      " 'keywords': ['powerpoint', 'ppt', 'slide count', 'number of slides'],\n",
      " 'name': 'Slide count',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': '# Start PowerPoint\\n'\n",
      "            'powerpoint = PowerPoint()\\n'\n",
      "            '# Add some slides\\n'\n",
      "            'powerpoint.add_slide()\\n'\n",
      "            'powerpoint.add_slide()\\n'\n",
      "            '# Show number of slides\\n'\n",
      "            'powerpoint.number_of_slides()\\n'}\n",
      "{'description': 'Add text to a slide',\n",
      " 'example': '>>> # Start PowerPoint\\n'\n",
      "            '>>> powerpoint = PowerPoint()\\n'\n",
      "            '>>> # Add slide with text\\n'\n",
      "            \">>> powerpoint.add_text(text='Sample Text')\\n\",\n",
      " 'function_call': 'add_text(self,text,index=None,font_size=48,font_name=None,bold=False,margin_bottom=100,margin_left=100,margin_right=100,margin_top=100)',\n",
      " 'icon': 'las la-file-powerpoint',\n",
      " 'keywords': ['powerpoint', 'ppt', 'text', 'add text', 'slides'],\n",
      " 'name': 'Text to slide',\n",
      " 'parameters': [{'description': ' Slide index to add text. If none is '\n",
      "                                'specified, a new slide will be added as final '\n",
      "                                'slide\\n',\n",
      "                 'name': ' index'},\n",
      "                {'description': ' Text to be added\\n', 'name': ' text'},\n",
      "                {'description': ' Fontsize, default value is 48\\n',\n",
      "                 'name': ' font_size'},\n",
      "                {'description': ' Fontname, if not specified will take default '\n",
      "                                'PowerPoint font\\n',\n",
      "                 'name': ' font_name'},\n",
      "                {'description': ' Toggle bold with True or False, default '\n",
      "                                'value is False\\n',\n",
      "                 'name': ' bold'},\n",
      "                {'description': ' Margin from the bottom in pixels, default '\n",
      "                                'value is 100 pixels\\n',\n",
      "                 'name': ' margin_bottom'},\n",
      "                {'description': ' Margin from the left in pixels, default '\n",
      "                                'value is 100 pixels\\n',\n",
      "                 'name': ' margin_left'},\n",
      "                {'description': ' Margin from the right in pixels, default '\n",
      "                                'value is 100 pixels\\n',\n",
      "                 'name': ' margin_right'},\n",
      "                {'description': ' Margin from the top in pixels, default value '\n",
      "                                'is 100 pixels\\n',\n",
      "                 'name': ' margin_top'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Start PowerPoint\\n'\n",
      "            'powerpoint = PowerPoint()\\n'\n",
      "            '# Add slide with text\\n'\n",
      "            \"powerpoint.add_text(text='Sample Text')\\n\"}\n",
      "{'description': 'Delete a slide',\n",
      " 'example': '>>> # Start PowerPoint\\n'\n",
      "            '>>> powerpoint = PowerPoint()\\n'\n",
      "            '>>> # Add some slides\\n'\n",
      "            '>>> powerpoint.add_slide()\\n'\n",
      "            '>>> powerpoint.add_slide()\\n'\n",
      "            '>>> # Delete last slide\\n'\n",
      "            '>>> powerpoint.delete_slide()\\n',\n",
      " 'function_call': 'delete_slide(index=None)',\n",
      " 'icon': 'las la-file-powerpoint',\n",
      " 'keywords': ['powerpoint', 'ppt', 'delete', 'delete slide'],\n",
      " 'name': 'Delete slide',\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " 'parameters': [{'description': ' Slide index to be deleted. If none is '\n",
      "                                'specified, last slide will be deleted\\n',\n",
      "                 'name': ' index'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Start PowerPoint\\n'\n",
      "            'powerpoint = PowerPoint()\\n'\n",
      "            '# Add some slides\\n'\n",
      "            'powerpoint.add_slide()\\n'\n",
      "            'powerpoint.add_slide()\\n'\n",
      "            '# Delete last slide\\n'\n",
      "            'powerpoint.delete_slide()\\n'}\n",
      "{'description': 'Can be used for example to replace arbitrary placeholder '\n",
      "                'value in a PowerPoint.For example when using a template '\n",
      "                \"slidedeck, using 'XXXX' as a placeholder.Take note that all \"\n",
      "                'strings are case sensitive.',\n",
      " 'example': '>>> # Start PowerPoint\\n'\n",
      "            '>>> powerpoint = PowerPoint()\\n'\n",
      "            '>>> # Add some slides with text\\n'\n",
      "            \">>> powerpoint.add_text(text='Hello, my name is placeholder')\\n\"\n",
      "            \">>> # Change 'placeholder' to the word 'robot\\n\"\n",
      "            \">>> powerpoint.replace_text(placeholder_text = 'placeholder', \"\n",
      "            \"replacement_text ='robot')\\n\",\n",
      " 'function_call': 'replace_text(placeholder_text, replacement_text)',\n",
      " 'icon': 'las la-file-powerpoint',\n",
      " 'keywords': ['powerpoint', 'ppt', 'replace', 'placeholder'],\n",
      " 'name': 'Replace all occurences of text in PowerPoint slides',\n",
      " 'parameters': [{'description': ' Placeholder value (string) in the '\n",
      "                                'PowerPoint, this will be replaced, e.g. '\n",
      "                                \"'Company Name'\\n\",\n",
      "                 'name': ' placeholder_text'},\n",
      "                {'description': ' Text (string) to replace the placeholder '\n",
      "                                'values with. It is recommended to make this '\n",
      "                                'unique in your PowerPoint to avoid wrongful '\n",
      "                                \"replacement, e.g. 'XXXX_placeholder_XXX'\\n\",\n",
      "                 'name': ' replacement_text'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Start PowerPoint\\n'\n",
      "            'powerpoint = PowerPoint()\\n'\n",
      "            '# Add some slides with text\\n'\n",
      "            \"powerpoint.add_text(text='Hello, my name is placeholder')\\n\"\n",
      "            \"# Change 'placeholder' to the word 'robot\\n\"\n",
      "            \"powerpoint.replace_text(placeholder_text = 'placeholder', \"\n",
      "            \"replacement_text ='robot')\\n\"}\n",
      "{'description': 'Export PowerPoint presentation to PDF file',\n",
      " 'example': '>>> # Start PowerPoint\\n'\n",
      "            '>>> powerpoint = PowerPoint()\\n'\n",
      "            '>>> # Add some slides with text\\n'\n",
      "            \">>> powerpoint.add_text(text='Robots are cool')\\n\"\n",
      "            '>>> # Export to pdf\\n'\n",
      "            '>>> powerpoint.export_to_pdf()\\n',\n",
      " 'function_call': 'export_to_pdf(output_path=None)',\n",
      " 'icon': 'las la-file-powerpoint',\n",
      " 'keywords': ['powerpoint', 'ppt', 'export', 'pdf'],\n",
      " 'name': 'PowerPoint to PDF',\n",
      " 'parameters': [{'description': ' Output path where PDF file will be exported '\n",
      "                                'to. Default path is home directory with '\n",
      "                                \"filename 'pdf_export.pdf'.\\n\",\n",
      "                 'name': ' path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Start PowerPoint\\n'\n",
      "            'powerpoint = PowerPoint()\\n'\n",
      "            '# Add some slides with text\\n'\n",
      "            \"powerpoint.add_text(text='Robots are cool')\\n\"\n",
      "            '# Export to pdf\\n'\n",
      "            'powerpoint.export_to_pdf()\\n'}\n",
      "{'description': 'Export PowerPoint slides to seperate image files',\n",
      " 'example': '>>> # Start PowerPoint\\n'\n",
      "            '>>> powerpoint = PowerPoint()\\n'\n",
      "            '>>> # Add some slides with text\\n'\n",
      "            \">>> powerpoint.add_text(text='Robots are cool')\\n\"\n",
      "            \">>> powerpoint.add_text(text='Humans are cooler')\\n\"\n",
      "            '>>> # Export slides to images\\n'\n",
      "            '>>> powerpoint.export_slides_to_images()\\n',\n",
      " 'function_call': 'export_slides_to_images(output_path=None, type=\"png\")',\n",
      " 'icon': 'las la-file-powerpoint',\n",
      " 'keywords': ['powerpoint', 'ppt', 'export', 'png', 'image', 'slides to image'],\n",
      " 'name': 'Slides to images',\n",
      " 'parameters': [{'description': ' Output path where image files will be '\n",
      "                                'exported to. Default path is home '\n",
      "                                'directory.\\n',\n",
      "                 'name': ' output_path'},\n",
      "                {'description': \" Output type of the images, supports 'png' \"\n",
      "                                \"and 'jpg' with 'png' as default value\\n\",\n",
      "                 'name': ' type'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Start PowerPoint\\n'\n",
      "            'powerpoint = PowerPoint()\\n'\n",
      "            '# Add some slides with text\\n'\n",
      "            \"powerpoint.add_text(text='Robots are cool')\\n\"\n",
      "            \"powerpoint.add_text(text='Humans are cooler')\\n\"\n",
      "            '# Export slides to images\\n'\n",
      "            'powerpoint.export_slides_to_images()\\n'}\n",
      "{'description': 'Send email Office Outlook 365',\n",
      " 'example': \">>> # Send email to 'robot@automagica.com'\\n\"\n",
      "            \">>> send_email_with_outlook365('SampleClientID', \"\n",
      "            \"'SampleClientSecret', 'robot@automagica.com')\\n\",\n",
      " 'function_call': 'send_email_with_outlook365(client_id, client_secret, '\n",
      "                  'to_email, subject=\"\", body=\"\")',\n",
      " 'icon': 'las la-envelope',\n",
      " 'keywords': ['mail', 'office 365', 'outlook', 'email', 'e-mail'],\n",
      " 'name': 'Send email Office Outlook 365',\n",
      " 'parameters': [{'description': ' Client id for office 365 account\\n',\n",
      "                 'name': ' client_id'},\n",
      "                {'description': ' Client secret for office 365 account\\n',\n",
      "                 'name': ' client_secret'},\n",
      "                {'description': ' E-mail to send to\\n', 'name': ' to_email'},\n",
      "                {'description': ' Optional subject\\n', 'name': ' subject'},\n",
      "                {'description': ' Optional body of the email\\n',\n",
      "                 'name': ' body'}],\n",
      " 'return': '',\n",
      " 'snippet': \"# Send email to 'robot@automagica.com'\\n\"\n",
      "            \"send_email_with_outlook365('SampleClientID', \"\n",
      "            \"'SampleClientSecret', 'robot@automagica.com')\\n\"}\n",
      "{'description': 'Activity to make calls to Salesforce REST API.',\n",
      " 'example': \">>> spf_api_call('action', 'key', 'parameters')\\nResponse\\n\",\n",
      " 'function_call': 'salesforce_api_call(action, key, parameters={}, '\n",
      "                  'method=\"get\", data={})',\n",
      " 'icon': 'lab la-salesforce',\n",
      " 'keywords': ['salesforce'],\n",
      " 'name': 'Salesforce API',\n",
      " 'parameters': [{'description': ' Action (the URL)\\n', 'name': ' action'},\n",
      "                {'description': ' Authorisation key \\n', 'name': ' key'},\n",
      "                {'description': ' URL params\\n', 'name': ' parameters'},\n",
      "                {'description': ' Method (get, post or patch)\\n',\n",
      "                 'name': ' method'},\n",
      "                {'description': ' Data for POST/PATCH.\\n', 'name': ' data'}],\n",
      " 'return': ' API data\\n',\n",
      " 'snippet': \"spf_api_call('action', 'key', 'parameters')\\n\"}\n",
      "{'description': 'This function lets you send emails with an e-mail address.',\n",
      " 'example': \">>> send_mail_smpt('robot@automagica.com', 'SampleUser', \"\n",
      "            \"'SamplePassword', 'robotfriend@automagica.com')\\n\",\n",
      " 'function_call': 'send_mail_smtp(smtp_host,smtp_user,smtp_password,to_address,subject=\"\",message=\"\",port=587)',\n",
      " 'icon': 'las la-mail-bulk',\n",
      " 'keywords': ['mail', 'e-mail', 'email smpt'],\n",
      " 'name': 'Mail with SMTP',\n",
      " 'parameters': [{'description': ' The host of your e-mail account. \\n',\n",
      "                 'name': ' smpt_host'},\n",
      "                {'description': ' The password of your e-mail account\\n',\n",
      "                 'name': ' smpt_user'},\n",
      "                {'description': ' The password of your e-mail account\\n',\n",
      "                 'name': ' smpt_password'},\n",
      "                {'description': ' The destination is the receiving mail '\n",
      "                                'address. \\n',\n",
      "                 'name': ' to_address'},\n",
      "                {'description': ' The subject \\n', 'name': ' subject'},\n",
      "                {'description': ' The body of the mail\\n', 'name': ' message'},\n",
      "                {'description': ' The port variable is standard 587. In most '\n",
      "                                'cases this argument can be ignored, but in '\n",
      "                                'some cases it needs to be changed to 465.\\n',\n",
      "                 'name': ' port'}],\n",
      " 'return': '',\n",
      " 'snippet': \"send_mail_smpt('robot@automagica.com', 'SampleUser', \"\n",
      "            \"'SamplePassword', 'robotfriend@automagica.com')\\n\"}\n",
      "{'description': 'Find a specific window based on the name, either a perfect '\n",
      "                'match or a partial match.',\n",
      " 'example': '>>> # Make text file\\n'\n",
      "            '>>> testfile = make_text_file()\\n'\n",
      "            '>>> # Open the file\\n'\n",
      "            '>>> open_file(testfile)\\n'\n",
      "            \">>> #Find 'Notepad' in window titles\\n\"\n",
      "            \">>> find_window_title('Notepad')\\n\"\n",
      "            \"'generated_text_file.txt - Notepad'\\n\",\n",
      " 'function_call': 'find_window_title(searchterm, partial=True)',\n",
      " 'icon': 'lab la-readme',\n",
      " 'keywords': ['windows',\n",
      "              'user',\n",
      "              'password',\n",
      "              'remote desktop',\n",
      "              'remote',\n",
      "              'citrix',\n",
      "              'vnc',\n",
      "              'remotedesktop'],\n",
      " 'name': 'Find window with specific title',\n",
      " 'parameters': [{'description': \" Ttile to look for, e.g. 'Calculator' when \"\n",
      "                                'looking for the Windows calculator\\n',\n",
      "                 'name': ' searchterm'},\n",
      "                {'description': ' Option to look for titles partially, e.g. '\n",
      "                                \"'Edge' will result in finding 'Microsoft \"\n",
      "                                \"Edge' when partial is set to True. Default \"\n",
      "                                'value is True\\n',\n",
      "                 'name': ' partial'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Make text file\\n'\n",
      "            'testfile = make_text_file()\\n'\n",
      "            '# Open the file\\n'\n",
      "            'open_file(testfile)\\n'\n",
      "            \"#Find 'Notepad' in window titles\\n\"\n",
      "            \"find_window_title('Notepad')\\n\"}\n",
      "{'description': 'Create a RDP and login to Windows Remote Desktop',\n",
      " 'example': \">>> start_remote_desktop('123.456.789.10','Administrator', \"\n",
      "            \"'SamplePassword')\\n\",\n",
      " 'function_call': 'start_remote_desktop(ip, username, password=None, '\n",
      "                  'desktop_width=1920, desktop_height=1080)',\n",
      " 'icon': 'las la-passport',\n",
      " 'keywords': ['windows',\n",
      "              'user',\n",
      "              'password',\n",
      "              'remote desktop',\n",
      "              'remote',\n",
      "              'citrix',\n",
      "              'vnc',\n",
      "              'remotedesktop'],\n",
      " 'name': 'Login to Windows Remote Desktop',\n",
      " 'parameters': [{'description': ' IP address of remote desktop\\n',\n",
      "                 'name': ' ip'},\n",
      "                {'description': ' Username\\n', 'name': ' username'},\n",
      "                {'description': ' Password\\n', 'name': ' password'},\n",
      "                {'description': ' Resolution (width) of desktop, standard '\n",
      "                                'value is 1920 (full HD)\\n',\n",
      "                 'name': ' desktop_width'},\n",
      "                {'description': ' Resolution (height) of desktop, standard '\n",
      "                                'value is 1080 (full HD)\\n',\n",
      "                 'name': ' desktop_height'}],\n",
      " 'return': '',\n",
      " 'snippet': \"start_remote_desktop('123.456.789.10','Administrator', \"\n",
      "            \"'SamplePassword')\\n\"}\n",
      "{'description': 'Stop Windows Remote Desktop',\n",
      " 'example': '>>> close_remote_desktop()\\n',\n",
      " 'function_call': 'close_remote_desktop()',\n",
      " 'icon': 'las la-passport',\n",
      " 'keywords': ['windows',\n",
      "              'user',\n",
      "              'password',\n",
      "              'remote desktop',\n",
      "              'remote',\n",
      "              'citrix',\n",
      "              'vnc',\n",
      "              'remotedesktop',\n",
      "              'stop'],\n",
      " 'name': 'Stop Windows Remote Desktop',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': 'close_remote_desktop()\\n'}\n",
      "{'description': 'Sets the password for a Windows user.',\n",
      " 'example': \">>> set_user_password('SampleUsername', 'SamplePassword')\\n\",\n",
      " 'function_call': 'set_user_password(username, password)',\n",
      " 'icon': 'las la-passport',\n",
      " 'keywords': ['windows', 'user', 'password', 'account'],\n",
      " 'name': 'Set Windows password',\n",
      " 'parameters': [{'description': ' Username\\n', 'name': ' username'},\n",
      "                {'description': ' New password\\n', 'name': ' password'}],\n",
      " 'return': '',\n",
      " 'snippet': \"set_user_password('SampleUsername', 'SamplePassword')\\n\"}\n",
      "{'description': 'Validates a Windows user password if it is correct',\n",
      " 'example': \">>> validate_user_password('SampleUsername', 'SamplePassword')\\n\"\n",
      "            'False\\n',\n",
      " 'function_call': 'validate_user_password(username, password)',\n",
      " 'icon': 'las la-passport',\n",
      " 'keywords': ['windows', 'user', 'password', 'account'],\n",
      " 'name': 'Check Windows password',\n",
      " 'parameters': [{'description': ' Username\\n', 'name': ' username'},\n",
      "                {'description': ' New password\\n', 'name': ' password'}],\n",
      " 'return': ' True if the password is correct\\n',\n",
      " 'snippet': \"validate_user_password('SampleUsername', 'SamplePassword')\\n\"}\n",
      "{'description': 'Locks Windows requiring login to continue.',\n",
      " 'example': '>>> lock_windows()\\n',\n",
      " 'function_call': 'lock_windows()',\n",
      " 'icon': 'las la-user-lock',\n",
      " 'keywords': ['windows',\n",
      "              'user',\n",
      "              'password',\n",
      "              'account',\n",
      "              'lock',\n",
      "              'freeze',\n",
      "              'hibernate',\n",
      "              'sleep',\n",
      "              'lockescreen'],\n",
      " 'name': 'Lock Windows',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': 'lock_windows()\\n'}\n",
      "{'description': 'Checks if the current user is logged in and not on the '\n",
      "                'lockscreen. Most automations do not work properly when the '\n",
      "                'desktop is locked.',\n",
      " 'example': '>>> is_logged_in()\\nTrue\\n',\n",
      " 'function_call': 'is_logged_in()',\n",
      " 'icon': 'lar la-user',\n",
      " 'keywords': ['windows',\n",
      "              'login',\n",
      "              'logged in',\n",
      "              'lockscreen',\n",
      "              'user',\n",
      "              'password',\n",
      "              'account',\n",
      "              'lock',\n",
      "              'freeze',\n",
      "              'hibernate',\n",
      "              'sleep'],\n",
      " 'name': 'Check if Windows logged in',\n",
      " 'parameters': [],\n",
      " 'return': ' True if the user is logged in, False if not\\n',\n",
      " 'snippet': 'is_logged_in()\\n'}\n",
      "{'description': 'Checks if the current user is locked out and on the '\n",
      "                'lockscreen. Most automations do not work properly when the '\n",
      "                'desktop is locked.',\n",
      " 'example': '>>> desktop_locked()\\nTrue\\n',\n",
      " 'function_call': 'is_desktop_locked()',\n",
      " 'icon': 'las la-user',\n",
      " 'keywords': ['windows',\n",
      "              'login',\n",
      "              'logged in',\n",
      "              'lockscreen',\n",
      "              'user',\n",
      "              'password',\n",
      "              'account',\n",
      "              'lock',\n",
      "              'locked',\n",
      "              'freeze',\n",
      "              'hibernate',\n",
      "              'sleep'],\n",
      " 'name': 'Check if Windows is locked',\n",
      " 'parameters': [],\n",
      " 'return': ' True when the lockscreen is active, False if not.\\n',\n",
      " 'snippet': 'desktop_locked()\\n'}\n",
      "{'description': \"Get current logged in user's username\",\n",
      " 'example': \">>> get_username()\\n'Automagica'\\n\",\n",
      " 'function_call': 'get_username()',\n",
      " 'icon': 'las la-user',\n",
      " 'keywords': ['windows',\n",
      "              'login',\n",
      "              'logged in',\n",
      "              'lockscreen',\n",
      "              'user',\n",
      "              'password',\n",
      "              'account',\n",
      "              'lock',\n",
      "              'locked',\n",
      "              'freeze',\n",
      "              'hibernate',\n",
      "              'sleep'],\n",
      " 'name': 'Get Windows username',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': 'get_username()\\n'}\n",
      "{'description': 'Set any text to the Windows clipboard.',\n",
      " 'example': '>>> # Create some sample text\\n'\n",
      "            \">>> sample_text = 'A robots favourite food must be computer \"\n",
      "            \"chips'\\n\"\n",
      "            '>>> # Set to clipboard\\n'\n",
      "            '>>> set_to_clipboard(sample_text)\\n'\n",
      "            '>>> # Print the clipboard to verify\\n'\n",
      "            '>>> print( get_from_clipboard() )\\n',\n",
      " 'function_call': 'set_to_clipboard(text)',\n",
      " 'icon': 'las la-clipboard-check',\n",
      " 'keywords': ['copy', 'clipboard', 'clip board', 'ctrl c', 'ctrl v', 'paste'],\n",
      " 'name': 'Set clipboard',\n",
      " 'parameters': [{'description': ' Text to put in the clipboard\\n',\n",
      "                 'name': ' text'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Create some sample text\\n'\n",
      "            \"sample_text = 'A robots favourite food must be computer chips'\\n\"\n",
      "            '# Set to clipboard\\n'\n",
      "            'set_to_clipboard(sample_text)\\n'\n",
      "            '# Print the clipboard to verify\\n'\n",
      "            'print( get_from_clipboard() )\\n'}\n",
      "{'description': 'Get the text currently in the Windows clipboard',\n",
      " 'example': '>>> # Create some sample text\\n'\n",
      "            \">>> sample_text = 'A robots favourite food must be computer \"\n",
      "            \"chips'\\n\"\n",
      "            '>>> # Set to clipboard\\n'\n",
      "            '>>> set_to_clipboard(sample_text)\\n'\n",
      "            '>>> # Get the clipboard to verify\\n'\n",
      "            '>>> get_from_clipboard()\\n'\n",
      "            \"'A robots favourite food must be computer chips'\\n\",\n",
      " 'function_call': 'get_from_clipboard()',\n",
      " 'icon': 'las la-clipboard-list',\n",
      " 'keywords': ['copy', 'clipboard', 'clip board', 'ctrl c', 'ctrl v', 'paste'],\n",
      " 'name': 'Get clipboard',\n",
      " 'parameters': [],\n",
      " 'return': ' Text currently in the clipboard\\n',\n",
      " 'snippet': '# Create some sample text\\n'\n",
      "            \"sample_text = 'A robots favourite food must be computer chips'\\n\"\n",
      "            '# Set to clipboard\\n'\n",
      "            'set_to_clipboard(sample_text)\\n'\n",
      "            '# Get the clipboard to verify\\n'\n",
      "            'get_from_clipboard()\\n'}\n",
      "{'description': 'Empty text from clipboard. Getting clipboard data after this '\n",
      "                'should return in None',\n",
      " 'example': '>>> # Create some sample text\\n'\n",
      "            \">>> sample_text = 'A robots favourite food must be computer \"\n",
      "            \"chips'\\n\"\n",
      "            '>>> # Set to clipboard\\n'\n",
      "            '>>> set_to_clipboard(sample_text)\\n'\n",
      "            '>>> # Clear the clipboard\\n'\n",
      "            '>>> clear_clipboard()\\n'\n",
      "            '>>> # Get clipboard contents to verify\\n'\n",
      "            '>>> print( get_clipboard() )\\n'\n",
      "            'None\\n',\n",
      " 'function_call': 'clear_clipboard()',\n",
      " 'icon': 'las la-clipboard',\n",
      " 'keywords': ['copy', 'clipboard', 'clip board', 'ctrl c', 'ctrl v', 'paste'],\n",
      " 'name': 'Empty clipboard',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': '# Create some sample text\\n'\n",
      "            \"sample_text = 'A robots favourite food must be computer chips'\\n\"\n",
      "            '# Set to clipboard\\n'\n",
      "            'set_to_clipboard(sample_text)\\n'\n",
      "            '# Clear the clipboard\\n'\n",
      "            'clear_clipboard()\\n'\n",
      "            '# Get clipboard contents to verify\\n'\n",
      "            'print( get_clipboard() )\\n'}\n",
      "{'description': 'Run a VBScript file',\n",
      " 'example': \">>> # Run a VBS script\\n>>> run_vbs_script('Samplescript.vbs')\\n\",\n",
      " 'function_call': 'run_vbs_script(script_path, parameters=[])',\n",
      " 'icon': 'las la-cogs',\n",
      " 'keywords': ['vbs', 'VBScript'],\n",
      " 'name': 'Run VBSscript',\n",
      " 'parameters': [{'description': ' Path to the .vbs-file\\n',\n",
      "                 'name': ' script_path'},\n",
      "                {'description': ' Additional arguments to pass to the '\n",
      "                                'VBScript\\n',\n",
      "                 'name': ' parameters'}],\n",
      " 'return': '',\n",
      " 'snippet': \"# Run a VBS script\\nrun_vbs_script('Samplescript.vbs')\\n\"}\n",
      "{'description': 'Make a beeping sound. Make sure your volume is up and you '\n",
      "                'have hardware connected.',\n",
      " 'example': '>>> beep()\\n',\n",
      " 'function_call': 'beep(frequency=1000, duration=500)',\n",
      " 'icon': 'las la-volume-up',\n",
      " 'keywords': ['beep', 'sound', 'noise', 'speaker', 'alert'],\n",
      " 'name': 'Beep',\n",
      " 'parameters': [{'description': ' Integer to specify frequency (Hz), default '\n",
      "                                'value is 1000 Hz\\n',\n",
      "                 'name': ' frequency'},\n",
      "                {'description': ' Integer to specify duration of beep in '\n",
      "                                'miliseconds (ms), default value is 500 ms.\\n',\n",
      "                 'name': ' duration'}],\n",
      " 'return': ' Sound\\n',\n",
      " 'snippet': 'beep()\\n'}\n",
      "{'description': 'Returns a list of all network interfaces of the current '\n",
      "                'machine',\n",
      " 'example': '>>> get_all_network_interface_names()\\n'\n",
      "            \"['Microsoft Kernel Debug Network Adapter', 'Realtek Gaming GbE \"\n",
      "            \"Family Controller', 'WAN Miniport (SSTP)']\\n\",\n",
      " 'function_call': 'get_all_network_interface_names()',\n",
      " 'icon': 'las la-ethernet',\n",
      " 'keywords': ['networking', 'connection', 'list'],\n",
      " 'name': 'Get all network interface names',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': 'get_all_network_interface_names()\\n'}\n",
      "{'description': 'Enables a network interface by its name.',\n",
      " 'example': \">>> enable_network_interface('Realtek Gaming GbE Family \"\n",
      "            \"Controller')\\n\",\n",
      " 'function_call': 'enable_network_interface(name)',\n",
      " 'icon': 'las la-ethernet',\n",
      " 'keywords': ['networking', 'connection', 'enable'],\n",
      " 'name': 'Enable network interface',\n",
      " 'parameters': [{'description': ' Name of the network\\n', 'name': ' name'}],\n",
      " 'return': '',\n",
      " 'snippet': \"enable_network_interface('Realtek Gaming GbE Family \"\n",
      "            \"Controller')\\n\"}\n",
      "{'description': 'Disables a network interface by its name.',\n",
      " 'example': \">>> disable_network_interface('Realtek Gaming GbE Family \"\n",
      "            \"Controller')\\n\",\n",
      " 'function_call': 'disable_network_interface(name)',\n",
      " 'icon': 'las la-ethernet',\n",
      " 'keywords': ['networking', 'connection', 'disable'],\n",
      " 'name': 'Disable network interface',\n",
      " 'parameters': [{'description': ' Name of the network interface\\n',\n",
      "                 'name': ' name'}],\n",
      " 'return': '',\n",
      " 'snippet': \"disable_network_interface('Realtek Gaming GbE Family \"\n",
      "            \"Controller')\\n\"}\n",
      "{'description': 'Returns the name of the printer selected as default',\n",
      " 'example': \">>> get_default_printer_name()\\n'Epson MF742C/744C'\\n\",\n",
      " 'function_call': 'get_default_printer_name()',\n",
      " 'icon': 'las la-print',\n",
      " 'keywords': ['printing', 'get default printer name', 'default printer'],\n",
      " 'name': 'Get default printer',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': 'get_default_printer_name()\\n'}\n",
      "{'description': 'Set the default printer.',\n",
      " 'example': \">>> set_default_printer('Epson MF742C/744C')\\n\",\n",
      " 'function_call': 'set_default_printer(name)',\n",
      " 'icon': 'las la-print',\n",
      " 'keywords': ['printing', 'set default printer name', 'default printer'],\n",
      " 'name': 'Set default printer',\n",
      " 'parameters': [{'description': ' Printer name\\n', 'name': ' name'}],\n",
      " 'return': '',\n",
      " 'snippet': \"set_default_printer('Epson MF742C/744C')\\n\"}\n",
      "{'description': 'Removes a printer by its name',\n",
      " 'example': \">>> remove_printer('Epson MF742C/744C')\\n\",\n",
      " 'function_call': 'remove_printer(name)',\n",
      " 'icon': 'las la-print',\n",
      " 'keywords': ['printing', 'remove printer', 'printer'],\n",
      " 'name': 'Remove printer',\n",
      " 'parameters': [{'description': ' Printer name to remove\\n', 'name': ' name'}],\n",
      " 'return': '',\n",
      " 'snippet': \"remove_printer('Epson MF742C/744C')\\n\"}\n",
      "{'description': 'Returns the status of a service on the machine',\n",
      " 'example': \">>> get_service_status('Windows Backup')\\n'stopped'\\n\",\n",
      " 'function_call': 'get_service_status(name)',\n",
      " 'icon': 'las la-cog',\n",
      " 'keywords': ['services', 'get service status', 'status'],\n",
      " 'name': 'Get service status',\n",
      " 'parameters': [{'description': ' Name of service\\n', 'name': ' name'}],\n",
      " 'return': '',\n",
      " 'snippet': \"get_service_status('Windows Backup')\\n\"}\n",
      "{'description': 'Starts a Windows service',\n",
      " 'example': \">>> start_service('Windows Backup')\\n\",\n",
      " 'function_call': 'start_service(name)',\n",
      " 'icon': 'las la-cog',\n",
      " 'keywords': ['services', 'start a service', 'start'],\n",
      " 'name': 'Start a service',\n",
      " 'parameters': [{'description': ' Name of service\\n', 'name': ' name'}],\n",
      " 'return': '',\n",
      " 'snippet': \"start_service('Windows Backup')\\n\"}\n",
      "{'description': 'Stops a Windows service',\n",
      " 'example': \">>> stop_service('Windows Backup')\\n\",\n",
      " 'function_call': 'stop_service(name)',\n",
      " 'icon': 'las la-cog',\n",
      " 'keywords': ['services', 'stop a service', 'stop'],\n",
      " 'name': 'Stop a service',\n",
      " 'parameters': [{'description': ' Name of service\\n', 'name': ' name'}],\n",
      " 'return': '',\n",
      " 'snippet': \"stop_service('Windows Backup')\\n\"}\n",
      "{'description': 'Sets a window to foreground by its title.',\n",
      " 'example': \">>> set_window_to_foreground('Notepad - Untitled')\\n\",\n",
      " 'function_call': 'set_window_to_foreground(title)',\n",
      " 'icon': 'las la-window-restore',\n",
      " 'keywords': ['window', 'foreground'],\n",
      " 'name': 'Set window to foreground',\n",
      " 'parameters': [{'description': ' Name of service\\n', 'name': ' name'}],\n",
      " 'return': '',\n",
      " 'snippet': \"set_window_to_foreground('Notepad - Untitled')\\n\"}\n",
      "{'description': 'Retrieve the title of the current foreground window',\n",
      " 'example': \">>> get_foreground_window_title()\\n'IPython'\\n\",\n",
      " 'function_call': 'get_foreground_window_title()',\n",
      " 'icon': 'las la-window-restore',\n",
      " 'keywords': ['window', 'foreground', 'title'],\n",
      " 'name': 'Get foreground window title',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': 'get_foreground_window_title()\\n'}\n",
      "{'description': 'Closes a window by its title',\n",
      " 'example': \">>> close_window('Untitled - Notepad')\\n\",\n",
      " 'function_call': 'close_window(title)',\n",
      " 'icon': 'las la-window-restore',\n",
      " 'keywords': ['window', 'close', 'title'],\n",
      " 'name': 'Close window',\n",
      " 'parameters': [{'description': ' Title of window\\n', 'name': ' title'}],\n",
      " 'return': '',\n",
      " 'snippet': \"close_window('Untitled - Notepad')\\n\"}\n",
      "{'description': 'Maximizes a window by its title',\n",
      " 'example': \">>> maximize_window('Untitled - Notepad')\\n\",\n",
      " 'function_call': 'maximize_window(title)',\n",
      " 'icon': 'las la-window-restore',\n",
      " 'keywords': ['window', 'maximize', 'title'],\n",
      " 'name': 'Maximize window',\n",
      " 'parameters': [{'description': ' Title of window\\n', 'name': ' title'}],\n",
      " 'return': '',\n",
      " 'snippet': \"maximize_window('Untitled - Notepad')\\n\"}\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'description': 'Restore a window by its title',\n",
      " 'example': \">>> restore_window('Untitled - Notepad')\\n\",\n",
      " 'function_call': 'restore_window(title)',\n",
      " 'icon': 'las la-window-restore',\n",
      " 'keywords': ['window', 'restore', 'title'],\n",
      " 'name': 'Restore window',\n",
      " 'parameters': [{'description': ' Title of window\\n', 'name': ' title'}],\n",
      " 'return': '',\n",
      " 'snippet': \"restore_window('Untitled - Notepad')\\n\"}\n",
      "{'description': 'Minimizes a window by its title',\n",
      " 'example': '>>> minimize_window(title)\\n',\n",
      " 'function_call': 'minimize_window(title)',\n",
      " 'icon': 'las la-window-restore',\n",
      " 'keywords': ['window', 'minimize', 'title'],\n",
      " 'name': 'Minimize window',\n",
      " 'parameters': [{'description': ' Title of window\\n', 'name': ' title'}],\n",
      " 'return': '',\n",
      " 'snippet': 'minimize_window(title)\\n'}\n",
      "{'description': 'Resize a window by its title',\n",
      " 'example': \">>> resize_window('Untitled - Notepad', 100, 200, 300, 400)\\n\",\n",
      " 'function_call': 'resize_window(title, x, y, width, height)',\n",
      " 'icon': 'las la-window-restore',\n",
      " 'keywords': ['window', 'resize', 'title'],\n",
      " 'name': 'Resize window',\n",
      " 'parameters': [{'description': ' Title of window\\n', 'name': ' title'},\n",
      "                {'description': ' Starting x position\\n', 'name': ' x'},\n",
      "                {'description': ' Starting y position\\n', 'name': ' y'},\n",
      "                {'description': ' Width\\n', 'name': ' width'},\n",
      "                {'description': ' Height\\n', 'name': ' height'}],\n",
      " 'return': '',\n",
      " 'snippet': \"resize_window('Untitled - Notepad', 100, 200, 300, 400)\\n\"}\n",
      "{'description': \"Hides a window from the user desktop by using it's title\",\n",
      " 'example': \">>> hide_window('Untitled - Notepad')\\n\",\n",
      " 'function_call': 'hide_window(title)',\n",
      " 'icon': 'las la-window-restore',\n",
      " 'keywords': ['window', 'hide', 'title'],\n",
      " 'name': 'Hide window',\n",
      " 'parameters': [{'description': ' Title of window\\n', 'name': ' title'}],\n",
      " 'return': '',\n",
      " 'snippet': \"hide_window('Untitled - Notepad')\\n\"}\n",
      "{'description': 'Runs a command over SSH (Secure Shell)',\n",
      " 'example': \">>> run_ssh_command('root', 'machine', 'ls -a')\\n'. .. .bashrc'\\n\",\n",
      " 'function_call': 'run_ssh_command(user, host, command)',\n",
      " 'icon': 'las la-terminal',\n",
      " 'keywords': ['ssh', 'command'],\n",
      " 'name': 'Run SSH command',\n",
      " 'parameters': [{'description': ' User\\n', 'name': ' user'},\n",
      "                {'description': ' Host\\n', 'name': ' host'},\n",
      "                {'description': ' Command\\n', 'name': ' command'}],\n",
      " 'return': '',\n",
      " 'snippet': \"run_ssh_command('root', 'machine', 'ls -a')\\n\"}\n",
      "{'description': 'Retrieves data from an SNMP agent using SNMP (Simple Network '\n",
      "                'Management Protocol)',\n",
      " 'example': '>>> snmp_get()\\n',\n",
      " 'function_call': 'snmp_get(target, oids, credentials, port=161, engine=None, '\n",
      "                  'context=None)',\n",
      " 'icon': 'las la-ethernet',\n",
      " 'keywords': ['snmp', 'simple network management protocol', 'protocols', 'get'],\n",
      " 'name': 'SNMP Get',\n",
      " 'parameters': [{'description': ' Target\\n', 'name': ' target'},\n",
      "                {'description': ' oids\\n', 'name': ' oids'},\n",
      "                {'description': ' credentials\\n', 'name': ' credentials'},\n",
      "                {'description': ' Port (default 161)\\n', 'name': ' port'},\n",
      "                {'description': ' Engine (default none)\\n', 'name': ' engine'},\n",
      "                {'description': ' Contect (default none)\\n',\n",
      "                 'name': ' context'}],\n",
      " 'return': '',\n",
      " 'snippet': 'snmp_get()\\n'}\n",
      "{'description': 'Interface to Windows Active Directory through ADSI. Connects '\n",
      "                'to the AD domain to which the machine is joined by default.',\n",
      " 'example': '>>> ad = ActiveDirectory()\\n',\n",
      " 'function_call': 'ActiveDirectory(ldap_server=None, username=None, '\n",
      "                  'password=None)',\n",
      " 'icon': 'las la-audio-description',\n",
      " 'keywords': ['AD', 'active directory', 'activedirectory'],\n",
      " 'name': 'AD interface',\n",
      " 'parameters': [{'description': ' LDAP server\\n', 'name': ' ldap_server'},\n",
      "                {'description': ' Username\\n', 'name': ' username'},\n",
      "                {'description': ' Password\\n', 'name': ' password'}],\n",
      " 'return': '',\n",
      " 'snippet': 'ad = ActiveDirectory()\\n'}\n",
      "{'description': 'Interface to Windows Active Directory through ADSI',\n",
      " 'example': '>>> ad = ActiveDirectory()\\n'\n",
      "            \">>> ad.get_object_by_distinguished_name('SampleDN')\\n\",\n",
      " 'function_call': 'get_object_by_distinguished_name(distinguished_name)',\n",
      " 'icon': 'las la-audio-description',\n",
      " 'keywords': ['AD', 'active directory', 'activedirectory'],\n",
      " 'name': 'Get AD object by name',\n",
      " 'parameters': [{'description': ' Name\\n', 'name': ' distinguished_name'}],\n",
      " 'return': '',\n",
      " 'snippet': 'ad = ActiveDirectory()\\n'\n",
      "            \"ad.get_object_by_distinguished_name('SampleDN')\\n\"}\n",
      "{'description': \"Returns the current user's home path\",\n",
      " 'example': '>>> # Home_path without arguments will return the home path\\n'\n",
      "            '>>> print( home_path() )\\n'\n",
      "            '>>> # When looking for a file in the home path, we can specify '\n",
      "            'it\\n'\n",
      "            '>>> # First make a sample text file\\n'\n",
      "            '>>> make_text_file()\\n'\n",
      "            '>>> # Refer to it\\n'\n",
      "            \">>> home_path('generated_text_file.txt')\\n\"\n",
      "            \"'C:\\\\\\\\Users\\\\\\\\<username>\\\\\\\\generated_text_file.txt'\\n\",\n",
      " 'function_call': 'home_path(filename=None)',\n",
      " 'icon': 'las la-home',\n",
      " 'keywords': ['home', 'home path', 'homepath', 'home directory', 'homedir'],\n",
      " 'name': 'Get user home path',\n",
      " 'parameters': [{'description': ' Optional filename to add to the path. Can '\n",
      "                                'also be a subdirectory\\n',\n",
      "                 'name': ' subdir'}],\n",
      " 'return': \" Path to the current user's home folder\\n\",\n",
      " 'snippet': '# Home_path without arguments will return the home path\\n'\n",
      "            'print( home_path() )\\n'\n",
      "            '# When looking for a file in the home path, we can specify it\\n'\n",
      "            '# First make a sample text file\\n'\n",
      "            'make_text_file()\\n'\n",
      "            '# Refer to it\\n'\n",
      "            \"home_path('generated_text_file.txt')\\n\"}\n",
      "{'description': \"Returns the current user's desktop path\",\n",
      " 'example': '>>> # Desktop_path without arguments will return the home path\\n'\n",
      "            '>>> print( desktop_path() )\\n'\n",
      "            '>>> # When looking for a file on the desktop, we can specify it\\n'\n",
      "            '>>> # First make a sample text file\\n'\n",
      "            '>>> make_text_file()\\n'\n",
      "            '>>> # Refer to it\\n'\n",
      "            \">>> desktop_path('generated_text_file.txt')\\n\"\n",
      "            \"'C:\\\\\\\\Users\\\\\\\\<username>\\\\\\\\Desktop\\\\\\\\generated_text_file.txt'\\n\",\n",
      " 'function_call': 'desktop_path(filename=None)',\n",
      " 'icon': 'lar la-desktop',\n",
      " 'keywords': ['desktop',\n",
      "              'desktop path',\n",
      "              'desktoppath',\n",
      "              'desktop directory',\n",
      "              'desktopdir'],\n",
      " 'name': 'Get desktop path',\n",
      " 'parameters': [{'description': ' Optional filename to add to the path. Can '\n",
      "                                'also be a subdirectory\\n',\n",
      "                 'name': ' filename'}],\n",
      " 'return': \" Path to the current user's desktop folder\\n\",\n",
      " 'snippet': '# Desktop_path without arguments will return the home path\\n'\n",
      "            'print( desktop_path() )\\n'\n",
      "            '# When looking for a file on the desktop, we can specify it\\n'\n",
      "            '# First make a sample text file\\n'\n",
      "            'make_text_file()\\n'\n",
      "            '# Refer to it\\n'\n",
      "            \"desktop_path('generated_text_file.txt')\\n\"}\n",
      "{'description': \"Returns the current user's default download path\",\n",
      " 'example': '>>> # Find downloads path\\n>>> downloads_path()\\n',\n",
      " 'function_call': 'downloads_path()',\n",
      " 'icon': 'lar la-download',\n",
      " 'keywords': ['download',\n",
      "              'download path',\n",
      "              'downloadpath',\n",
      "              'download directory',\n",
      "              'download dir',\n",
      "              'downloaddir'],\n",
      " 'name': 'Get downloads path',\n",
      " 'parameters': [],\n",
      " 'return': \" Path to the current user's downloads folder\\n\",\n",
      " 'snippet': '# Find downloads path\\ndownloads_path()\\n'}\n",
      "{'description': 'Opens file with default programs',\n",
      " 'example': '>>> # Make text file\\n'\n",
      "            '>>> testfile = make_text_file()\\n'\n",
      "            '>>> # Open the file\\n'\n",
      "            '>>> open_file(testfile)\\n',\n",
      " 'function_call': 'open_file(input_path)',\n",
      " 'icon': 'lar la-file',\n",
      " 'keywords': ['file',\n",
      "              'open',\n",
      "              'open file',\n",
      "              'show',\n",
      "              'reveal',\n",
      "              'explorer',\n",
      "              'run',\n",
      "              'start'],\n",
      " 'name': 'Open file',\n",
      " 'parameters': [{'description': ' Path to file. \\n', 'name': ' input_path'}],\n",
      " 'return': ' Path to file\\n',\n",
      " 'snippet': '# Make text file\\n'\n",
      "            'testfile = make_text_file()\\n'\n",
      "            '# Open the file\\n'\n",
      "            'open_file(testfile)\\n'}\n",
      "{'description': 'Set Windows desktop wallpaper with the the specified image',\n",
      " 'example': '>>> # Caution: this example will change your wallpaper\\n'\n",
      "            '>>> # Take a screenshot of current screen\\n'\n",
      "            '>>> screenshot = take_screenshot()\\n'\n",
      "            '>>> # Flip it hozirontally for fun\\n'\n",
      "            '>>> mirror_image_horizontally(screenshot)\\n'\n",
      "            '>>> # Set flipped image as wallpaper\\n'\n",
      "            '>>> set_wallpaper(screenshot)\\n',\n",
      " 'function_call': 'set_wallpaper(image_path)',\n",
      " 'icon': 'las la-desktop',\n",
      " 'keywords': ['desktop',\n",
      "              'desktop path',\n",
      "              'desktoppath',\n",
      "              'desktop directory',\n",
      "              'desktopdir',\n",
      "              'wallpaper',\n",
      "              'wall paper',\n",
      "              'wall'],\n",
      " 'name': 'Set wallpaper',\n",
      " 'parameters': [{'description': ' Path to the image. This image will be set as '\n",
      "                                'desktop wallpaper\\n',\n",
      "                 'name': ' image_path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Caution: this example will change your wallpaper\\n'\n",
      "            '# Take a screenshot of current screen\\n'\n",
      "            'screenshot = take_screenshot()\\n'\n",
      "            '# Flip it hozirontally for fun\\n'\n",
      "            'mirror_image_horizontally(screenshot)\\n'\n",
      "            '# Set flipped image as wallpaper\\n'\n",
      "            'set_wallpaper(screenshot)\\n'}\n",
      "{'description': 'Download file from a URL',\n",
      " 'example': '>>> # Download robot picture from the wikipedia robot page\\n'\n",
      "            '>>> picture_url = '\n",
      "            \"'https://upload.wikimedia.org/wikipedia/commons/thumb/6/6c/Atlas_from_boston_dynamics.jpg/220px-Atlas_from_boston_dynamics.jpg'\\n\"\n",
      "            '>>> download_file_from_url(url = picture_url, output_path '\n",
      "            \"='robot.jpg')\\n\"\n",
      "            \"'C:\\\\\\\\Users\\\\\\\\<username>\\\\\\\\robot.jpg'\\n\",\n",
      " 'function_call': 'download_file_from_url(url, output_path=None)',\n",
      " 'icon': 'las la-cloud-download-alt',\n",
      " 'keywords': ['download', 'download url', 'save', 'request'],\n",
      " 'name': 'Download file from a URL',\n",
      " 'parameters': [{'description': ' Source URL to download file from\\n',\n",
      "                 'name': ' url'},\n",
      "                {'description': ' Target path, default to homedir with name '\n",
      "                                \"'_download_' + random addition\\n\",\n",
      "                 'name': ' output_path'}],\n",
      " 'return': ' Target path as string\\n',\n",
      " 'snippet': '# Download robot picture from the wikipedia robot page\\n'\n",
      "            'picture_url = '\n",
      "            \"'https://upload.wikimedia.org/wikipedia/commons/thumb/6/6c/Atlas_from_boston_dynamics.jpg/220px-Atlas_from_boston_dynamics.jpg'\\n\"\n",
      "            'download_file_from_url(url = picture_url, output_path '\n",
      "            \"='robot.jpg')\\n\"}\n",
      "{'description': 'This activity will rename a file. If the the desired name '\n",
      "                'already exists in the folder file will not be renamed. Make '\n",
      "                'sure to add the exstention to specify filetype.',\n",
      " 'example': '>>> # Make new text file in home directory\\n'\n",
      "            '>>> text_file = make_text_file()\\n'\n",
      "            '>>> # Rename the file\\n'\n",
      "            \">>> rename_file(text_file, output_name='brand_new_filename.txt')\\n\"\n",
      "            \"C:\\\\\\\\Users\\\\\\\\<username>\\\\\\\\brand_new_filename.txt'\\n\",\n",
      " 'function_call': 'rename_file(input_path, output_name=None)',\n",
      " 'icon': 'las la-file-contract',\n",
      " 'keywords': ['file',\n",
      "              'rename',\n",
      "              'rename file',\n",
      "              'organise file',\n",
      "              'files',\n",
      "              'file manipulation',\n",
      "              'explorer',\n",
      "              'nautilus'],\n",
      " 'name': 'Rename a file',\n",
      " 'parameters': [{'description': ' Full path to file that will be renamed\\n',\n",
      "                 'name': ' input_path'},\n",
      "                {'description': \" New name of the file e.g. 'newfile.txt'. By \"\n",
      "                                'default file will be renamed to original '\n",
      "                                \"folder name with '_renamed' added to the \"\n",
      "                                'folder name.\\n',\n",
      "                 'name': ' output_name'}],\n",
      " 'return': ' Path to renamed file as a string. None if folder could not be '\n",
      "           'renamed.\\n',\n",
      " 'snippet': '# Make new text file in home directory\\n'\n",
      "            'text_file = make_text_file()\\n'\n",
      "            '# Rename the file\\n'\n",
      "            \"rename_file(text_file, output_name='brand_new_filename.txt')\\n\"}\n",
      "{'description': 'If the new location already contains a file with the same '\n",
      "                'name.',\n",
      " 'example': '>>> # Make new text file in home directory\\n'\n",
      "            '>>> text_file = make_text_file()\\n'\n",
      "            '>>> # Make a folder to move the file to\\n'\n",
      "            '>>> new_folder = create_folder()\\n'\n",
      "            '>>> # Move text file to the folder\\n'\n",
      "            '>>> move_file(text_file, new_folder)\\n',\n",
      " 'function_call': 'move_file(input_path, output_path=None)',\n",
      " 'icon': 'las la-file-export',\n",
      " 'keywords': ['file',\n",
      "              'move',\n",
      "              'move file',\n",
      "              'organise file',\n",
      "              'files',\n",
      "              'file manipulation',\n",
      "              'explorer',\n",
      "              'nautilus'],\n",
      " 'name': 'Move a file',\n",
      " 'parameters': [{'description': ' Full path to the file that will be moved\\n',\n",
      "                 'name': ' input_path'},\n",
      "                {'description': ' Path to the folder where file will be moved '\n",
      "                                \"to, defaults to input_path with '_moved' \"\n",
      "                                'added\\n',\n",
      "                 'name': ' output_path'}],\n",
      " 'return': ' Path to renamed file as a string. None if folder could not be '\n",
      "           'moved.\\n',\n",
      " 'snippet': '# Make new text file in home directory\\n'\n",
      "            'text_file = make_text_file()\\n'\n",
      "            '# Make a folder to move the file to\\n'\n",
      "            'new_folder = create_folder()\\n'\n",
      "            '# Move text file to the folder\\n'\n",
      "            'move_file(text_file, new_folder)\\n'}\n",
      "{'description': 'Remove a file',\n",
      " 'example': '>>> # Make new text file in home directory\\n'\n",
      "            '>>> text_file = make_text_file()\\n'\n",
      "            '>>> # Remove the file\\n'\n",
      "            '>>> remove_file(text_file)\\n',\n",
      " 'function_call': 'remove_file(path)',\n",
      " 'icon': 'las la-trash',\n",
      " 'keywords': ['file',\n",
      "              'delete',\n",
      "              'erase',\n",
      "              'delete file',\n",
      "              'organise file',\n",
      "              'files',\n",
      "              'file manipulation',\n",
      "              'explorer',\n",
      "              'nautilus'],\n",
      " 'name': 'Remove a file',\n",
      " 'parameters': [{'description': ' Full path to the file that will be '\n",
      "                                'deleted.\\n',\n",
      "                 'name': ' path'}],\n",
      " 'return': ' Path to removed file as a string.\\n',\n",
      " 'snippet': '# Make new text file in home directory\\n'\n",
      "            'text_file = make_text_file()\\n'\n",
      "            '# Remove the file\\n'\n",
      "            'remove_file(text_file)\\n'}\n",
      "{'description': 'This function checks whether the file with the given path '\n",
      "                'exists.',\n",
      " 'example': '>>> # Make new text file in home directory\\n'\n",
      "            '>>> text_file = make_text_file()\\n'\n",
      "            '>>> # Check if file exists\\n'\n",
      "            '>>> file_exists(text_file)\\n'\n",
      "            'True\\n',\n",
      " 'function_call': 'file_exists(path)',\n",
      " 'icon': 'las la-tasks',\n",
      " 'keywords': ['file',\n",
      "              'exists',\n",
      "              'files',\n",
      "              'file manipulation',\n",
      "              'explorer',\n",
      "              'nautilus'],\n",
      " 'name': 'Check if file exists',\n",
      " 'parameters': [{'description': ' Full path to the file to check.\\n',\n",
      "                 'name': ' path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Make new text file in home directory\\n'\n",
      "            'text_file = make_text_file()\\n'\n",
      "            '# Check if file exists\\n'\n",
      "            'file_exists(text_file)\\n'}\n",
      "{'description': 'Not that this activity is blocking and will keep the system '\n",
      "                'waiting.',\n",
      " 'example': '>>> # Make new text file in home directory\\n'\n",
      "            '>>> text_file = make_text_file()\\n'\n",
      "            '>>> # Wait untile file exists # Should pass immediatly\\n'\n",
      "            '>>> wait_file_exists(text_file)\\n',\n",
      " 'function_call': 'wait_file_exists(path, timeout=60)',\n",
      " 'icon': 'las la-list-alt',\n",
      " 'keywords': ['file',\n",
      "              'wait',\n",
      "              'wait till exists',\n",
      "              'files',\n",
      "              'file manipulation',\n",
      "              'explorer',\n",
      "              'nautilus'],\n",
      " 'name': 'Wait until a file exists.',\n",
      " 'parameters': [{'description': ' Full path to file.\\n', 'name': ' path'},\n",
      "                {'description': ' Maximum time in seconds to wait before '\n",
      "                                'continuing. Default value is 60 seconds.\\n',\n",
      "                 'name': ' timeout'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Make new text file in home directory\\n'\n",
      "            'text_file = make_text_file()\\n'\n",
      "            '# Wait untile file exists # Should pass immediatly\\n'\n",
      "            'wait_file_exists(text_file)\\n'}\n",
      "{'description': 'Writes a list to a  text (.txt) file.Every element of the '\n",
      "                'entered list is written on a new line of the text file.',\n",
      " 'example': '>>> # Make a list to write\\n'\n",
      "            \">>> robot_names = ['WALL-E', 'Terminator', 'R2D2']\\n\"\n",
      "            '>>> # Create a new text file\\n'\n",
      "            '>>> text_file = make_text_file()\\n'\n",
      "            '>>> write_list_to_file(robot_names, text_file)\\n'\n",
      "            '>>> # Open the file for illustration\\n'\n",
      "            '>>> open_file(text_file)\\n',\n",
      " 'function_call': 'write_list_to_file(list_to_write, file_path)',\n",
      " 'icon': 'las la-list',\n",
      " 'keywords': ['list', 'text', 'txt', 'list to file', 'write list', 'write'],\n",
      " 'name': 'List to .txt',\n",
      " 'parameters': [{'description': ' List to write to .txt file\\n',\n",
      "                 'name': ' list_to_write'},\n",
      "                {'description': ' Path to the text-file. \\n',\n",
      "                 'name': ' file_path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Make a list to write\\n'\n",
      "            \"robot_names = ['WALL-E', 'Terminator', 'R2D2']\\n\"\n",
      "            '# Create a new text file\\n'\n",
      "            'text_file = make_text_file()\\n'\n",
      "            'write_list_to_file(robot_names, text_file)\\n'\n",
      "            '# Open the file for illustration\\n'\n",
      "            'open_file(text_file)\\n'}\n",
      "{'description': 'This activity reads the content of a .txt file to a list and '\n",
      "                'returns that list.Every new line from the .txt file becomes a '\n",
      "                'new element of the list. The activity willnot work if the '\n",
      "                'entered path is not attached to a .txt file.',\n",
      " 'example': '>>> # Make a list to write\\n'\n",
      "            \">>> robot_names = ['WALL-E', 'Terminator', 'R2D2']\\n\"\n",
      "            '>>> # Create a new text file\\n'\n",
      "            '>>> text_file = make_text_file()\\n'\n",
      "            '>>> write_list_to_file(robot_names, text_file)\\n'\n",
      "            '>>> # Read list from file\\n'\n",
      "            '>>> read_list_from_txt(text_file)\\n'\n",
      "            \"['WALL-E', 'Terminator', 'R2D2']\\n\",\n",
      " 'function_call': 'read_list_from_txt(input_path)',\n",
      " 'icon': 'las la-th-list',\n",
      " 'keywords': ['list',\n",
      "              'text',\n",
      "              'txt',\n",
      "              'list to file',\n",
      "              'write list',\n",
      "              'read',\n",
      "              'read txt',\n",
      "              'read text'],\n",
      " 'name': 'Read list from .txt file',\n",
      " 'parameters': [{'description': ' Path to the .txt file\\n',\n",
      "                 'name': ' input_path'}],\n",
      " 'return': ' List with contents of specified .txt file\\n',\n",
      " 'snippet': '# Make a list to write\\n'\n",
      "            \"robot_names = ['WALL-E', 'Terminator', 'R2D2']\\n\"\n",
      "            '# Create a new text file\\n'\n",
      "            'text_file = make_text_file()\\n'\n",
      "            'write_list_to_file(robot_names, text_file)\\n'\n",
      "            '# Read list from file\\n'\n",
      "            'read_list_from_txt(text_file)\\n'}\n",
      "{'description': 'This activity reads a .txt file and returns the content',\n",
      " 'example': '>>> # Create a new text file\\n'\n",
      "            '>>> text_file = make_text_file()\\n'\n",
      "            '>>> # Read list from file\\n'\n",
      "            '>>> read_from_txt(text_file)\\n'\n",
      "            \"'Sample text'\\n\",\n",
      " 'function_call': 'read_from_txt(file_path)',\n",
      " 'icon': 'las la-th-list',\n",
      " 'keywords': ['list',\n",
      "              'text',\n",
      "              'txt',\n",
      "              'list to file',\n",
      "              'read',\n",
      "              'read txt',\n",
      "              'read text'],\n",
      " 'name': 'Read .txt file',\n",
      " 'parameters': [{'description': ' Path to the .txt file\\n',\n",
      "                 'name': ' input_path'}],\n",
      " 'return': ' Contents of specified .txt file\\n',\n",
      " 'snippet': '# Create a new text file\\n'\n",
      "            'text_file = make_text_file()\\n'\n",
      "            '# Read list from file\\n'\n",
      "            'read_from_txt(text_file)\\n'}\n",
      "{'description': 'Append a text line to a file and creates the file if it does '\n",
      "                'not exist yet.',\n",
      " 'example': '>>> # Create a new text file\\n'\n",
      "            '>>> text_file = make_text_file()\\n'\n",
      "            '>>> # Append a few lines to the file\\n'\n",
      "            \">>> append_line('Line 1', text_file)\\n\"\n",
      "            \">>> append_line('Line 2', text_file)\\n\"\n",
      "            \">>> append_line('Line 3', text_file)\\n\"\n",
      "            '>>> # Open the file for illustration\\n'\n",
      "            '>>> open_file(text_file)\\n',\n",
      " 'function_call': 'append_line(text, file_path)',\n",
      " 'icon': 'las la-tasks',\n",
      " 'keywords': ['list',\n",
      "              'text',\n",
      "              'txt',\n",
      "              'list to file',\n",
      "              'write list',\n",
      "              'read',\n",
      "              'write txt',\n",
      "              'append text',\n",
      "              'append line',\n",
      "              'append',\n",
      "              'add to file',\n",
      "              'add'],\n",
      " 'name': 'Append to .txt',\n",
      " 'parameters': [{'description': ' The text line to write to the end of the '\n",
      "                                'file\\n',\n",
      "                 'name': ' text'},\n",
      "                {'description': ' Path to the file to write to\\n',\n",
      "                 'name': ' file_path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Create a new text file\\n'\n",
      "            'text_file = make_text_file()\\n'\n",
      "            '# Append a few lines to the file\\n'\n",
      "            \"append_line('Line 1', text_file)\\n\"\n",
      "            \"append_line('Line 2', text_file)\\n\"\n",
      "            \"append_line('Line 3', text_file)\\n\"\n",
      "            '# Open the file for illustration\\n'\n",
      "            'open_file(text_file)\\n'}\n",
      "{'description': 'Initialize text file',\n",
      " 'example': '>>> # Create a new text file\\n'\n",
      "            '>>> text_file = make_text_file()\\n'\n",
      "            \"C:\\\\\\\\Users\\\\\\\\<username>\\\\\\\\generated_text_file.txt'\\n\",\n",
      " 'function_call': 'make_text_file(text=\"Sample text\", output_path=None)',\n",
      " 'icon': 'las la-file-alt',\n",
      " 'keywords': ['make text file',\n",
      "              'text_file',\n",
      "              'testfile',\n",
      "              'exampel file',\n",
      "              'make file',\n",
      "              'make',\n",
      "              'new file',\n",
      "              'new text_file',\n",
      "              'txt',\n",
      "              'new txt'],\n",
      " 'name': 'Make text file',\n",
      " 'parameters': [{'description': ' The text line to write to the end of the '\n",
      "                                \"file. Default text is 'Sample text'\\n\",\n",
      "                 'name': ' text'},\n",
      "                {'description': ' Ouput path. Will write to home directory on '\n",
      "                                'default\\n',\n",
      "                 'name': ' output_path'}],\n",
      " 'return': ' Path as string\\n',\n",
      " 'snippet': '# Create a new text file\\ntext_file = make_text_file()\\n'}\n",
      "{'description': 'Read a text file to a Python list-object',\n",
      " 'example': '>>> # Create a new text file\\n'\n",
      "            '>>> text_file = make_text_file(text=\"First line!\\\\nSecond '\n",
      "            'line!\")\\n'\n",
      "            '>>> # Read the text file to a list\\n'\n",
      "            '>>> lines = read_text_file_to_list(text_file)\\n'\n",
      "            '>>> lines\\n'\n",
      "            \"['First line!', 'Second line!']\\n\",\n",
      " 'function_call': 'read_text_file_to_list(file_path)',\n",
      " 'icon': 'las la-copy',\n",
      " 'keywords': ['read text file', 'list', 'reading text file'],\n",
      " 'name': 'Read .txt file with newlines to list',\n",
      " 'parameters': [{'description': ' Path to the text file which should be read '\n",
      "                                'to a list\\n',\n",
      "                 'name': ' file_path'}],\n",
      " 'return': ' List with the lines in the text file\\n',\n",
      " 'snippet': '# Create a new text file\\n'\n",
      "            'text_file = make_text_file(text=\"First line!\\\\nSecond line!\")\\n'\n",
      "            '# Read the text file to a list\\n'\n",
      "            'lines = read_text_file_to_list(text_file)\\n'\n",
      "            'lines\\n'}\n",
      "{'description': 'Copies a file from one place to another.If the new location '\n",
      "                'already contains a file with the same name, a random 4 '\n",
      "                'character uid is added to the name.',\n",
      " 'example': '>>> # Create a new text file\\n'\n",
      "            '>>> text_file = make_text_file()\\n'\n",
      "            '>>> # Copy the text file\\n'\n",
      "            '>>> copy_file(text_file)\\n'\n",
      "            \"C:\\\\\\\\Users\\\\\\\\<username>\\\\\\\\generated_text_file.txt'\\n\",\n",
      " 'function_call': 'copy_file(input_path, output_path=None)',\n",
      " 'icon': 'las la-copy',\n",
      " 'keywords': ['make text file',\n",
      "              'text_file',\n",
      "              'testfile',\n",
      "              'example file',\n",
      "              'make file',\n",
      "              'make',\n",
      "              'new file',\n",
      "              'new text_file',\n",
      "              'txt',\n",
      "              'new txt'],\n",
      " 'name': 'Copy a file',\n",
      " 'parameters': [{'description': ' Full path to the source location of the '\n",
      "                                'file\\n',\n",
      "                 'name': ' input_path'},\n",
      "                {'description': ' Optional full path to the destination '\n",
      "                                'location of the folder. If not specified file '\n",
      "                                'will be copied to the same location with a '\n",
      "                                'random 8 character uid is added to the '\n",
      "                                'name.\\n',\n",
      "                 'name': ' output_path'}],\n",
      " 'return': ' New path as string\\n',\n",
      " 'snippet': '# Create a new text file\\n'\n",
      "            'text_file = make_text_file()\\n'\n",
      "            '# Copy the text file\\n'\n",
      "            'copy_file(text_file)\\n'}\n",
      "{'description': 'Get extension of a file',\n",
      " 'example': '>>> # Create a new text file\\n'\n",
      "            '>>> text_file = make_text_file()\\n'\n",
      "            '>>> # Get file extension of this text file\\n'\n",
      "            '>>> get_file_extension(text_file)\\n'\n",
      "            \"'.txt'\\n\",\n",
      " 'function_call': 'get_file_extension(file_path)',\n",
      " 'icon': 'las la-info',\n",
      " 'keywords': ['file', 'extension', 'file extension', 'details'],\n",
      " 'name': 'Get file extension',\n",
      " 'parameters': [{'description': ' Path to file to get extension from\\n',\n",
      "                 'name': ' file_path'}],\n",
      " 'return': \" String with extension, e.g. '.txt'\\n\",\n",
      " 'snippet': '# Create a new text file\\n'\n",
      "            'text_file = make_text_file()\\n'\n",
      "            '# Get file extension of this text file\\n'\n",
      "            'get_file_extension(text_file)\\n'}\n",
      "{'description': 'Send file to default printer to priner. This activity sends a '\n",
      "                'file to the printer. Make sure to have a default printer set '\n",
      "                'up.',\n",
      " 'example': '>>> # Caution as this example could result in a print from '\n",
      "            'default printer\\n'\n",
      "            '>>> # Create a new text file\\n'\n",
      "            \">>> text_file = make_text_file(text = 'What does a robot do at \"\n",
      "            \"lunch? Take a megabyte!')\\n\"\n",
      "            '>>> # Print the text file\\n'\n",
      "            '>>> send_to_printer(text_file)\\n',\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " 'function_call': 'send_to_printer(file_path)',\n",
      " 'icon': 'las la-print',\n",
      " 'keywords': ['print', 'printer', 'printing', 'ink', 'export'],\n",
      " 'name': 'Print',\n",
      " 'parameters': [{'description': ' Path to the file to print, should be a '\n",
      "                                'printable file\\n',\n",
      "                 'name': ' file_path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Caution as this example could result in a print from default '\n",
      "            'printer\\n'\n",
      "            '# Create a new text file\\n'\n",
      "            \"text_file = make_text_file(text = 'What does a robot do at lunch? \"\n",
      "            \"Take a megabyte!')\\n\"\n",
      "            '# Print the text file\\n'\n",
      "            'send_to_printer(text_file)\\n'}\n",
      "{'description': 'Extracts the text from a PDF. This activity reads text from a '\n",
      "                'pdf file. Can only read PDF files that contain a text layer.',\n",
      " 'example': '>>> # Caution, for this example to work a .pdf example file will '\n",
      "            'be downloaded from automagica.com FTP\\n'\n",
      "            '>>> example_pdf = '\n",
      "            \"download_file_from_url('http://automagica.com/examples/example_document.pdf')\\n\"\n",
      "            '>>> # Open example pdf for illustration\\n'\n",
      "            '>>> open_file(example_pdf)\\n'\n",
      "            '>>> # Read the text\\n'\n",
      "            '>>> read_text_from_pdf(example_pdf)\\n',\n",
      " 'function_call': 'read_text_from_pdf(file_path)',\n",
      " 'icon': 'las la-glasses',\n",
      " 'keywords': ['PDF', 'read', 'text', 'extract text', 'PDF file'],\n",
      " 'name': 'Text from PDF',\n",
      " 'parameters': [{'description': ' Path to the PDF (either relative or '\n",
      "                                'absolute)\\n',\n",
      "                 'name': ' file_path'}],\n",
      " 'return': ' The text from the PDF\\n',\n",
      " 'snippet': '# Caution, for this example to work a .pdf example file will be '\n",
      "            'downloaded from automagica.com FTP\\n'\n",
      "            'example_pdf = '\n",
      "            \"download_file_from_url('http://automagica.com/examples/example_document.pdf')\\n\"\n",
      "            '# Open example pdf for illustration\\n'\n",
      "            'open_file(example_pdf)\\n'\n",
      "            '# Read the text\\n'\n",
      "            'read_text_from_pdf(example_pdf)\\n'}\n",
      "{'description': 'Merges multiple PDFs into a single file',\n",
      " 'example': '>>> # Caution, for this example to work a .pdf example file will '\n",
      "            'be downloaded from automagica.com FTP\\n'\n",
      "            '>>> example_pdf = '\n",
      "            \"download_file_from_url('http://automagica.com/examples/example_document.pdf')\\n\"\n",
      "            '>>> # Join the PDF file with itself for illustration, could also '\n",
      "            'be different files\\n'\n",
      "            '>>> merged_pdf = join_pdf_files(example_pdf, example_pdf)\\n'\n",
      "            '>>> # Open resulting PDF file for illustration\\n'\n",
      "            '>>> open_file(merged_pdf)\\n',\n",
      " 'function_call': 'join_pdf_files(first_file_path, second_file_path, '\n",
      "                  'third_file_path=None, output_path=None)',\n",
      " 'icon': 'las la-object-ungroup',\n",
      " 'keywords': ['PDF',\n",
      "              'read',\n",
      "              'text',\n",
      "              'extract text',\n",
      "              'PDF file',\n",
      "              'join PDF',\n",
      "              'join',\n",
      "              'merge',\n",
      "              'merge PDF'],\n",
      " 'name': 'Merge PDF',\n",
      " 'parameters': [{'description': ' Path to first PDF file\\n',\n",
      "                 'name': ' first_file_path'},\n",
      "                {'description': ' Path to second PDF file\\n',\n",
      "                 'name': ' second_file_path'},\n",
      "                {'description': ' Path to third PDF file, optional\\n',\n",
      "                 'name': ' third_file_path'},\n",
      "                {'description': ' Full path where joined pdf files can be '\n",
      "                                'written. If no path is given will write to '\n",
      "                                \"home dir as 'merged_pdf.pdf'\\n\",\n",
      "                 'name': ' output_path'}],\n",
      " 'return': ' Output path as string\\n',\n",
      " 'snippet': '# Caution, for this example to work a .pdf example file will be '\n",
      "            'downloaded from automagica.com FTP\\n'\n",
      "            'example_pdf = '\n",
      "            \"download_file_from_url('http://automagica.com/examples/example_document.pdf')\\n\"\n",
      "            '# Join the PDF file with itself for illustration, could also be '\n",
      "            'different files\\n'\n",
      "            'merged_pdf = join_pdf_files(example_pdf, example_pdf)\\n'\n",
      "            '# Open resulting PDF file for illustration\\n'\n",
      "            'open_file(merged_pdf)\\n'}\n",
      "{'description': 'Extracts a particular range of a PDF to a separate file.',\n",
      " 'example': '>>> # Caution, for this example to work a .pdf example file will '\n",
      "            'be downloaded from automagica.com FTP\\n'\n",
      "            '>>> example_pdf = '\n",
      "            \"download_file_from_url('http://automagica.com/examples/example_document.pdf')\\n\"\n",
      "            '>>> # Join the PDF file three times to create multi page\\n'\n",
      "            '>>> multi_page_pdf_example = join_pdf_files(example_pdf, '\n",
      "            'example_pdf, example_pdf)\\n'\n",
      "            '>>> # Extract some pages from it\\n'\n",
      "            '>>> new_file = '\n",
      "            'extract_page_range_from_pdf(multi_page_pdf_example, 1, 2 )\\n'\n",
      "            '>>> # Open resulting PDF file for illustration\\n'\n",
      "            '>>> open_file(new_file)\\n',\n",
      " 'function_call': 'extract_page_range_from_pdf(file_path, start_page, '\n",
      "                  'end_page, output_path=None)',\n",
      " 'icon': 'las la-cut',\n",
      " 'keywords': ['PDF',\n",
      "              'read',\n",
      "              'extract text',\n",
      "              'PDF file',\n",
      "              'extract PDF',\n",
      "              'join',\n",
      "              'cut',\n",
      "              'cut PDF',\n",
      "              'extract pages',\n",
      "              'extract from pdf',\n",
      "              'select page',\n",
      "              'page'],\n",
      " 'name': 'Extract page from PDF',\n",
      " 'parameters': [{'description': ' Path to the PDF (either relative or '\n",
      "                                'absolute)\\n',\n",
      "                 'name': ' file_path'},\n",
      "                {'description': ' Page number to start from, with 0 being the '\n",
      "                                'first page\\n',\n",
      "                 'name': ' start_page'},\n",
      "                {'description': ' Page number to end with, with 0 being the '\n",
      "                                'first page\\n',\n",
      "                 'name': ' end_page'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Caution, for this example to work a .pdf example file will be '\n",
      "            'downloaded from automagica.com FTP\\n'\n",
      "            'example_pdf = '\n",
      "            \"download_file_from_url('http://automagica.com/examples/example_document.pdf')\\n\"\n",
      "            '# Join the PDF file three times to create multi page\\n'\n",
      "            'multi_page_pdf_example = join_pdf_files(example_pdf, example_pdf, '\n",
      "            'example_pdf)\\n'\n",
      "            '# Extract some pages from it\\n'\n",
      "            'new_file = extract_page_range_from_pdf(multi_page_pdf_example, 1, '\n",
      "            '2 )\\n'\n",
      "            '# Open resulting PDF file for illustration\\n'\n",
      "            'open_file(new_file)\\n'}\n",
      "{'description': 'Save a specific page from a PDF as an image',\n",
      " 'example': '>>> # Caution, for this example to work a .pdf example file will '\n",
      "            'be downloaded from automagica.com FTP\\n'\n",
      "            '>>> example_pdf = '\n",
      "            \"download_file_from_url('http://automagica.com/examples/example_document.pdf')\\n\"\n",
      "            '>>> # Extract the images\\n'\n",
      "            '>>> extract_images_from_pdf(example_pdf)\\n',\n",
      " 'function_call': 'extract_images_from_pdf(file_path)',\n",
      " 'icon': 'las la-icons',\n",
      " 'keywords': ['PDF',\n",
      "              'extract images',\n",
      "              'images',\n",
      "              'extract text',\n",
      "              'PDF file',\n",
      "              'image'],\n",
      " 'name': 'Extract images from PDF',\n",
      " 'parameters': [{'description': ' Full path to store extracted images\\n',\n",
      "                 'name': ' file_path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Caution, for this example to work a .pdf example file will be '\n",
      "            'downloaded from automagica.com FTP\\n'\n",
      "            'example_pdf = '\n",
      "            \"download_file_from_url('http://automagica.com/examples/example_document.pdf')\\n\"\n",
      "            '# Extract the images\\n'\n",
      "            'extract_images_from_pdf(example_pdf)\\n'}\n",
      "{'description': 'Watermark a PDF',\n",
      " 'example': '>>> # Caution, for this example to work a .pdf example file will '\n",
      "            'be downloaded from automagica.com FTP\\n'\n",
      "            '>>> example_pdf = '\n",
      "            \"download_file_from_url('http://automagica.com/examples/example_document.pdf')\\n\"\n",
      "            '>>> # Download the watermark\\n'\n",
      "            '>>> example_watermark = '\n",
      "            \"download_file_from_url('http://automagica.com/examples/approved_stamp.pdf')\\n\"\n",
      "            '>>> # Apply the watermark\\n'\n",
      "            '>>> watermarked_file = apply_watermark_to_pdf(example_pdf, '\n",
      "            'example_watermark)\\n'\n",
      "            '>>> # Open the file for illustration\\n'\n",
      "            '>>> open_file(watermarked_file)\\n',\n",
      " 'function_call': 'apply_watermark_to_pdf(file_path, watermark_path, '\n",
      "                  'output_path=\"\")',\n",
      " 'icon': 'las la-stamp',\n",
      " 'keywords': ['PDF',\n",
      "              'extract images',\n",
      "              'images',\n",
      "              'extract text',\n",
      "              'PDF file',\n",
      "              'image'],\n",
      " 'name': 'Watermark a PDF',\n",
      " 'parameters': [{'description': ' Filepath to the document that will be '\n",
      "                                'watermarked. Should be pdf file.\\n',\n",
      "                 'name': ' file_path'},\n",
      "                {'description': ' Filepath to the watermark. Should be pdf '\n",
      "                                'file.\\n',\n",
      "                 'name': ' watermark_path'},\n",
      "                {'description': ' Path to save watermarked PDF. If no path is '\n",
      "                                'provided same path as input will be used with '\n",
      "                                \"'watermarked' added to the name\\n\",\n",
      "                 'name': ' output_path'}],\n",
      " 'return': ' Output path as a string\\n',\n",
      " 'snippet': '# Caution, for this example to work a .pdf example file will be '\n",
      "            'downloaded from automagica.com FTP\\n'\n",
      "            'example_pdf = '\n",
      "            \"download_file_from_url('http://automagica.com/examples/example_document.pdf')\\n\"\n",
      "            '# Download the watermark\\n'\n",
      "            'example_watermark = '\n",
      "            \"download_file_from_url('http://automagica.com/examples/approved_stamp.pdf')\\n\"\n",
      "            '# Apply the watermark\\n'\n",
      "            'watermarked_file = apply_watermark_to_pdf(example_pdf, '\n",
      "            'example_watermark)\\n'\n",
      "            '# Open the file for illustration\\n'\n",
      "            'open_file(watermarked_file)\\n'}\n",
      "{'description': 'Get average CPU load for all cores.',\n",
      " 'example': '>>> get_cpu_load()\\n10.1\\n',\n",
      " 'function_call': 'get_cpu_load(measure_time=1)',\n",
      " 'icon': 'las la-microchip',\n",
      " 'keywords': ['cpu', 'load', 'cpuload'],\n",
      " 'name': 'CPU load',\n",
      " 'parameters': [{'description': ' Time (seconds) to measure load. Standard '\n",
      "                                'measure_time is 1 second.\\n',\n",
      "                 'name': ' measure_time'}],\n",
      " 'return': ' Displayed load is an average over measured_time.\\n',\n",
      " 'snippet': 'get_cpu_load()\\n'}\n",
      "{'description': \"Get the number of CPU's in the current system.\",\n",
      " 'example': '>>> get_number_of_cpu()\\n2\\n',\n",
      " 'function_call': 'get_number_of_cpu(logical=True)',\n",
      " 'icon': 'las la-calculator',\n",
      " 'keywords': ['cpu', 'count', 'number of cpu'],\n",
      " 'name': 'Count CPU',\n",
      " 'parameters': [{'description': ' Determines if only logical units are added '\n",
      "                                'to the count, default value is True.\\n',\n",
      "                 'name': ' logical'}],\n",
      " 'return': ' Number of CPU Integer\\n',\n",
      " 'snippet': 'get_number_of_cpu()\\n'}\n",
      "{'description': 'Get frequency at which CPU currently operates.',\n",
      " 'example': '>>> get_cpu_frequency()\\n'\n",
      "            'scpufreq(current=3600.0, min=0.0, max=3600.0)\\n',\n",
      " 'function_call': 'get_cpu_frequency()',\n",
      " 'icon': 'las la-wave-square',\n",
      " 'keywords': ['cpu', 'load', 'cpu frequency'],\n",
      " 'name': 'CPU frequency',\n",
      " 'parameters': [],\n",
      " 'return': ' minimum and maximum frequency\\n',\n",
      " 'snippet': 'get_cpu_frequency()\\n'}\n",
      "{'description': 'Get CPU statistics',\n",
      " 'example': '>>> get_cpu_stats()\\n'\n",
      "            'scpustats(ctx_switches=735743826, interrupts=1540483897, '\n",
      "            'soft_interrupts=0, syscalls=2060595131)\\n',\n",
      " 'function_call': 'get_cpu_stats()',\n",
      " 'icon': 'las la-server',\n",
      " 'keywords': ['cpu', 'load', 'cpu frequency', 'stats', 'cpu statistics'],\n",
      " 'name': 'CPU Stats',\n",
      " 'parameters': [],\n",
      " 'return': ' Number of CTX switches, intterupts, soft-interrupts and '\n",
      "           'systemcalls.\\n',\n",
      " 'snippet': 'get_cpu_stats()\\n'}\n",
      "{'description': 'Get  memory statistics',\n",
      " 'example': '>>> get_memory_stats()\\n'\n",
      "            'sswap(total=24640016384, used=18120818688, free=6519197696, '\n",
      "            'percent=73.5, sin=0, sout=0)\\n',\n",
      " 'function_call': 'get_memory_stats(mem_type=\"swap\")',\n",
      " 'icon': 'las la-memory',\n",
      " 'keywords': ['memory', 'statistics', 'usage', 'ram'],\n",
      " 'name': 'Memory statistics',\n",
      " 'parameters': [{'description': \" Choose mem_type = 'virtual' for virtual \"\n",
      "                                \"memory, and mem_type = 'swap' for swap memory \"\n",
      "                                '(standard).\\n',\n",
      "                 'name': ' mem_type'}],\n",
      " 'return': ' Total, used, free and percentage in use.\\n',\n",
      " 'snippet': 'get_memory_stats()\\n'}\n",
      "{'description': 'Get disk statistics of main disk',\n",
      " 'example': '>>> get_disk_stats()\\n'\n",
      "            'sdiskusage(total=999559262208, used=748696350720, '\n",
      "            'free=250862911488, percent=74.9)\\n',\n",
      " 'function_call': 'get_disk_stats()',\n",
      " 'icon': 'las la-save',\n",
      " 'keywords': ['disk usage', 'disk stats', 'disk', 'harddisk', 'space'],\n",
      " 'name': 'Disk stats',\n",
      " 'parameters': [],\n",
      " 'return': ' Total, used, free and percentage in use.\\n',\n",
      " 'snippet': 'get_disk_stats()\\n'}\n",
      "{'description': 'Get disk partition info',\n",
      " 'example': '>>> get_disk_paritions()\\n'\n",
      "            \"[sdiskpart(device='C:\\\\\\\\', mountpoint='C:\\\\\\\\', fstype='NTFS', \"\n",
      "            \"opts='rw,fixed')]\\n\",\n",
      " 'function_call': 'get_disk_partitions()',\n",
      " 'icon': 'las la-save',\n",
      " 'keywords': ['disk usage', 'disk stats', 'disk', 'harddisk', 'space'],\n",
      " 'name': 'Partition info',\n",
      " 'parameters': [],\n",
      " 'return': ' tuple with info for every partition.\\n',\n",
      " 'snippet': 'get_disk_paritions()\\n'}\n",
      "{'description': 'Get most recent boot time',\n",
      " 'example': '>>> get_boot_time()\\n123456789.0\\n',\n",
      " 'function_call': 'get_boot_time()',\n",
      " 'icon': 'lar la-clock',\n",
      " 'keywords': ['boot', 'boot time', 'boottime', 'startup', 'timer'],\n",
      " 'name': 'Boot time',\n",
      " 'parameters': [],\n",
      " 'return': ' time PC was booted in seconds after the epoch.\\n',\n",
      " 'snippet': 'get_boot_time()\\n'}\n",
      "{'description': 'Get uptime since last boot',\n",
      " 'example': '>>> get_time_since_last_boot()\\n1337.0\\n',\n",
      " 'function_call': 'get_time_since_last_boot()',\n",
      " 'icon': 'lar la-clock',\n",
      " 'keywords': ['boot', 'boot time', 'boottime', 'startup', 'timer'],\n",
      " 'name': 'Uptime',\n",
      " 'parameters': [],\n",
      " 'return': ' time since last boot in seconds.\\n',\n",
      " 'snippet': 'get_time_since_last_boot()\\n'}\n",
      "{'description': 'Displays an image specified by the path variable on the '\n",
      "                'default imaging program.',\n",
      " 'example': '>>> # Take screenshot of current screen to use as test image\\n'\n",
      "            '>>> testimage = take_screenshot()\\n'\n",
      "            '>>> # Show the image\\n'\n",
      "            '>>> show_image(testimage)\\n',\n",
      " 'function_call': 'show_image(file_path)',\n",
      " 'icon': 'las la-images',\n",
      " 'keywords': ['image', 'show image', 'reveal', 'open image', 'open'],\n",
      " 'name': 'Show image',\n",
      " 'parameters': [{'description': ' Path to image\\n', 'name': ' file_path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Take screenshot of current screen to use as test image\\n'\n",
      "            'testimage = take_screenshot()\\n'\n",
      "            '# Show the image\\n'\n",
      "            'show_image(testimage)\\n'}\n",
      "{'description': 'Rotate an image',\n",
      " 'example': '>>> # Take screenshot of current screen to use as test image\\n'\n",
      "            '>>> testimage = take_screenshot()\\n'\n",
      "            '>>> # Rotate the image\\n'\n",
      "            '>>> rotate_image(testimage)\\n'\n",
      "            '>>> # Show the image\\n'\n",
      "            '>>> show_image(testimage)\\n',\n",
      " 'function_call': 'rotate_image(file_path, angle=90)',\n",
      " 'icon': 'las la-undo',\n",
      " 'keywords': ['image',\n",
      "              'rotate image',\n",
      "              '90 degrees',\n",
      "              'image manipulation',\n",
      "              'photoshop',\n",
      "              'paint'],\n",
      " 'name': 'Rotate image',\n",
      " 'parameters': [{'description': ' Path to image\\n', 'name': ' file_path'},\n",
      "                {'description': ' Degrees to rotate image. Note that angles '\n",
      "                                'other than 90, 180, 270, 360 can resize the '\n",
      "                                'picture. \\n',\n",
      "                 'name': ' angle'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Take screenshot of current screen to use as test image\\n'\n",
      "            'testimage = take_screenshot()\\n'\n",
      "            '# Rotate the image\\n'\n",
      "            'rotate_image(testimage)\\n'\n",
      "            '# Show the image\\n'\n",
      "            'show_image(testimage)\\n'}\n",
      "{'description': 'Resizes the image specified by the path variable.',\n",
      " 'example': '>>> # Take screenshot of current screen to use as test image\\n'\n",
      "            '>>> testimage = take_screenshot()\\n'\n",
      "            '>>> # Resize the image\\n'\n",
      "            '>>> resize_image(testimage, size=(100,100))\\n'\n",
      "            '>>> # Show the image\\n'\n",
      "            '>>> show_image(testimage)\\n',\n",
      " 'function_call': 'resize_image(file_path, size)',\n",
      " 'icon': 'las la-expand-arrows-alt',\n",
      " 'keywords': ['image',\n",
      "              'resize image',\n",
      "              'resize',\n",
      "              'size',\n",
      "              'image manipulation',\n",
      "              'photoshop',\n",
      "              'paint'],\n",
      " 'name': 'Resize image',\n",
      " 'parameters': [{'description': ' Path to the image\\n', 'name': ' file_path'},\n",
      "                {'description': ' Tuple with the width and height in pixels. '\n",
      "                                'E.g.  (300, 400) gives the image a width of '\n",
      "                                '300 pixels and a height of 400 pixels.\\n',\n",
      "                 'name': ' size'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Take screenshot of current screen to use as test image\\n'\n",
      "            'testimage = take_screenshot()\\n'\n",
      "            '# Resize the image\\n'\n",
      "            'resize_image(testimage, size=(100,100))\\n'\n",
      "            '# Show the image\\n'\n",
      "            'show_image(testimage)\\n'}\n",
      "{'description': 'Get with of image',\n",
      " 'example': '>>> # Take screenshot of current screen to use as test image\\n'\n",
      "            '>>> testimage = take_screenshot()\\n'\n",
      "            '>>> # get image height\\n'\n",
      "            '>>> get_image_width(testimage)\\n'\n",
      "            '1000\\n',\n",
      " 'function_call': 'get_image_width(file_path)',\n",
      " 'icon': 'las la-expand-arrows-alt',\n",
      " 'keywords': ['image', 'height', 'width', 'image height', 'image width'],\n",
      " 'name': 'Get image width',\n",
      " 'parameters': [{'description': ' Path to image\\n', 'name': ' file_path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Take screenshot of current screen to use as test image\\n'\n",
      "            'testimage = take_screenshot()\\n'\n",
      "            '# get image height\\n'\n",
      "            'get_image_width(testimage)\\n'}\n",
      "{'description': 'Get height of image',\n",
      " 'example': '>>> # Take screenshot of current screen to use as test image\\n'\n",
      "            '>>> testimage = take_screenshot()\\n'\n",
      "            '>>> # get image height\\n'\n",
      "            '>>> get_image_height(testimage)\\n'\n",
      "            '1000\\n',\n",
      " 'function_call': 'get_image_height(file_path)',\n",
      " 'icon': 'las la-arrows-alt-v',\n",
      " 'keywords': ['image', 'height', 'width', 'image height', 'image width'],\n",
      " 'name': 'Get image height',\n",
      " 'parameters': [{'description': ' Path to image\\n', 'name': ' file_path'}],\n",
      " 'return': ' Height of image\\n',\n",
      " 'snippet': '# Take screenshot of current screen to use as test image\\n'\n",
      "            'testimage = take_screenshot()\\n'\n",
      "            '# get image height\\n'\n",
      "            'get_image_height(testimage)\\n'}\n",
      "{'description': 'Crops the image specified by path to a region determined by '\n",
      "                'the box variable.',\n",
      " 'example': '>>> # Take screenshot of current screen to use as test image\\n'\n",
      "            '>>> testimage = take_screenshot()\\n'\n",
      "            '>>> # Crop the image\\n'\n",
      "            '>>> crop_image(testimage, box = (10,10,100,100))\\n'\n",
      "            '>>> # Show the image\\n'\n",
      "            '>>> show_image(testimage)\\n',\n",
      " 'function_call': 'crop_image(file_path, box=None)',\n",
      " 'icon': 'las la-crop',\n",
      " 'keywords': ['image', 'crop', 'crop image'],\n",
      " 'name': 'Crop image',\n",
      " 'parameters': [{'description': ' Path to image\\n', 'name': ' file_path'},\n",
      "                {'description': '  A tuple that defines the left, upper, right '\n",
      "                                'and lower pixel coördinate e.g.: (left, '\n",
      "                                'upper, right, lower)\\n',\n",
      "                 'name': ' box'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Take screenshot of current screen to use as test image\\n'\n",
      "            'testimage = take_screenshot()\\n'\n",
      "            '# Crop the image\\n'\n",
      "            'crop_image(testimage, box = (10,10,100,100))\\n'\n",
      "            '# Show the image\\n'\n",
      "            'show_image(testimage)\\n'}\n",
      "{'description': 'Mirrors an image with a given path horizontally from left to '\n",
      "                'right.',\n",
      " 'example': '>>> # Take screenshot of current screen to use as test image\\n'\n",
      "            '>>> testimage = take_screenshot()\\n'\n",
      "            '>>> # Mirror image horizontally\\n'\n",
      "            '>>> mirror_image_horizontally(testimage)\\n'\n",
      "            '>>> # Show the image\\n'\n",
      "            '>>> show_image(testimage)\\n',\n",
      " 'function_call': 'mirror_image_horizontally(file_path)',\n",
      " 'icon': 'las la-caret-up',\n",
      " 'keywords': ['image',\n",
      "              'flip',\n",
      "              'flip image',\n",
      "              'mirror',\n",
      "              'mirror image',\n",
      "              'horizon',\n",
      "              'horizontally'],\n",
      " 'name': 'Mirror image horizontally',\n",
      " 'parameters': [{'description': ' Path to image\\n', 'name': ' file_path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Take screenshot of current screen to use as test image\\n'\n",
      "            'testimage = take_screenshot()\\n'\n",
      "            '# Mirror image horizontally\\n'\n",
      "            'mirror_image_horizontally(testimage)\\n'\n",
      "            '# Show the image\\n'\n",
      "            'show_image(testimage)\\n'}\n",
      "{'description': 'Mirrors an image with a given path vertically from top to '\n",
      "                'bottom.',\n",
      " 'example': '>>> # Take screenshot of current screen to use as test image\\n'\n",
      "            '>>> testimage = take_screenshot()\\n'\n",
      "            '>>> # Mirror image vertically\\n'\n",
      "            '>>> mirror_image_vertically(testimage)\\n'\n",
      "            '>>> # Show the image\\n'\n",
      "            '>>> show_image(testimage)\\n',\n",
      " 'function_call': 'mirror_image_vertically(file_path)',\n",
      " 'icon': 'las la-caret-right',\n",
      " 'keywords': ['image',\n",
      "              'flip',\n",
      "              'flip image',\n",
      "              'mirror',\n",
      "              'mirror image',\n",
      "              'vertical',\n",
      "              'vertically'],\n",
      " 'name': 'Mirror image vertically',\n",
      " 'parameters': [{'description': ' Path to image\\n', 'name': ' file_path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Take screenshot of current screen to use as test image\\n'\n",
      "            'testimage = take_screenshot()\\n'\n",
      "            '# Mirror image vertically\\n'\n",
      "            'mirror_image_vertically(testimage)\\n'\n",
      "            '# Show the image\\n'\n",
      "            'show_image(testimage)\\n'}\n",
      "{'description': 'Use Windows Run to boot a processNote this uses keyboard '\n",
      "                'inputs which means this process can be disrupted by '\n",
      "                'interfering inputs',\n",
      " 'example': '>>> # Open paint with Windows run\\n'\n",
      "            \">>> run_manual('mspaint.exe')\\n\"\n",
      "            '>>> # Open home directory with Windows run\\n'\n",
      "            '>>> run_manual(home_path())\\n',\n",
      " 'function_call': 'run_manual(task)',\n",
      " 'icon': 'las la-cog',\n",
      " 'keywords': ['run', 'open', 'task', 'win r', 'windows run', 'shell', 'cmd'],\n",
      " 'name': 'Windows run',\n",
      " 'parameters': [{'description': \" Name of the task to run e.g. 'mspaint.exe'\\n\",\n",
      "                 'name': ' task'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open paint with Windows run\\n'\n",
      "            \"run_manual('mspaint.exe')\\n\"\n",
      "            '# Open home directory with Windows run\\n'\n",
      "            'run_manual(home_path())\\n'}\n",
      "{'description': 'Use subprocess to open a windows process',\n",
      " 'example': \">>> # Open paint with Windows run\\n>>> run('mspaint.exe')\\n\",\n",
      " 'function_call': 'run(process)',\n",
      " 'icon': 'las la-play',\n",
      " 'keywords': ['run', 'open', 'task', 'win r', 'windows run', 'shell', 'cmd'],\n",
      " 'name': 'Run process',\n",
      " 'parameters': [{'description': \" Process to open e.g: 'calc.exe', \"\n",
      "                                \"'notepad.exe', 'control.exe', \"\n",
      "                                \"'mspaint.exe'.\\n\",\n",
      "                 'name': ' process'}],\n",
      " 'return': '',\n",
      " 'snippet': \"# Open paint with Windows run\\nrun('mspaint.exe')\\n\"}\n",
      "{'description': 'Check if process is running. Validates if given process name '\n",
      "                '(name) is currently running on the system.',\n",
      " 'example': '>>> # Open paint with Windows run\\n'\n",
      "            \">>> run('mspaint.exe')\\n\"\n",
      "            '>>> # Check if paint is running\\n'\n",
      "            \">>> is_process_running('mspaint.exe')\\n\"\n",
      "            'True\\n',\n",
      " 'function_call': 'is_process_running(name)',\n",
      " 'icon': 'las la-cogs',\n",
      " 'keywords': ['run', 'open', 'task', 'win r', 'windows run', 'shell', 'cmd'],\n",
      " 'name': 'Check if process is running',\n",
      " 'parameters': [{'description': ' Name of process\\n', 'name': ' name'}],\n",
      " 'return': ' Boolean\\n',\n",
      " 'snippet': '# Open paint with Windows run\\n'\n",
      "            \"run('mspaint.exe')\\n\"\n",
      "            '# Check if paint is running\\n'\n",
      "            \"is_process_running('mspaint.exe')\\n\"}\n",
      "{'description': 'Get names of unique processes currently running on the '\n",
      "                'system.',\n",
      " 'example': '>>> # Show all running processes\\n'\n",
      "            '>>> get_running_processes()\\n'\n",
      "            \"['cmd.exe', 'chrome.exe', ... ]\\n\",\n",
      " 'function_call': 'get_running_processes()',\n",
      " 'icon': 'las la-list',\n",
      " 'keywords': ['process',\n",
      "              'processes',\n",
      "              'list processes',\n",
      "              'running',\n",
      "              'running processes'],\n",
      " 'name': 'Get running processes',\n",
      " 'parameters': [],\n",
      " 'return': ' List of unique running processes\\n',\n",
      " 'snippet': '# Show all running processes\\nget_running_processes()\\n'}\n",
      "{'description': 'Kills a process forcefully',\n",
      " 'example': '>>> # Open paint with Windows run\\n'\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            \">>> run('mspaint.exe')\\n\"\n",
      "            '>>> # Force paint to close\\n'\n",
      "            \">>> kill_process('mspaint.exe')\\n\",\n",
      " 'function_call': 'kill_process(name=None)',\n",
      " 'icon': 'las la-window-close',\n",
      " 'keywords': ['run',\n",
      "              'open',\n",
      "              'task',\n",
      "              'win r',\n",
      "              'windows run',\n",
      "              'shell',\n",
      "              'cmd',\n",
      "              'kill',\n",
      "              'stop',\n",
      "              'kill process',\n",
      "              'stop process',\n",
      "              'quit',\n",
      "              'exit'],\n",
      " 'name': 'Kill process',\n",
      " 'parameters': [{'description': ' Name of the process\\n', 'name': ' name'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Open paint with Windows run\\n'\n",
      "            \"run('mspaint.exe')\\n\"\n",
      "            '# Force paint to close\\n'\n",
      "            \"kill_process('mspaint.exe')\\n\"}\n",
      "{'description': 'This activity extracts all text from the current screen or an '\n",
      "                'image if a path is specified.',\n",
      " 'example': '>>> # Make a text file with some text to recognize\\n'\n",
      "            \">>> testfile = make_text_file(text='OCR Example')\\n\"\n",
      "            '>>> # Open the text file\\n'\n",
      "            '>>> open_file(testfile)\\n'\n",
      "            '>>> # Find the text with OCR\\n'\n",
      "            \">>> extracted_text = find_text_on_screen_ocr(text='OCR Example')\\n\"\n",
      "            '>>> # Check if the extracted_text contains the original word\\n'\n",
      "            \">>> 'OCR Example' in extracted_text\\n\"\n",
      "            'True\\n',\n",
      " 'function_call': 'extract_text_ocr(file_path=None)',\n",
      " 'icon': 'lab la-readme',\n",
      " 'keywords': ['OCR',\n",
      "              'vision',\n",
      "              'AI',\n",
      "              'screen',\n",
      "              'citrix',\n",
      "              'read',\n",
      "              'optical character recognition'],\n",
      " 'name': 'Get text with OCR',\n",
      " 'parameters': [{'description': ' Path to image from where text will be '\n",
      "                                'extracted. If no path is specified a '\n",
      "                                'screenshot of current screen will be used.\\n',\n",
      "                 'name': ' file_path'}],\n",
      " 'return': ' String with all text from current screen\\n',\n",
      " 'snippet': '# Make a text file with some text to recognize\\n'\n",
      "            \"testfile = make_text_file(text='OCR Example')\\n\"\n",
      "            '# Open the text file\\n'\n",
      "            'open_file(testfile)\\n'\n",
      "            '# Find the text with OCR\\n'\n",
      "            \"extracted_text = find_text_on_screen_ocr(text='OCR Example')\\n\"\n",
      "            '# Check if the extracted_text contains the original word\\n'\n",
      "            \"'OCR Example' in extracted_text\\n\"}\n",
      "{'description': 'This activity finds position (coordinates) of specified text '\n",
      "                'on the current screen using OCR.',\n",
      " 'example': '>>> # Make a text file with some text to recognize\\n'\n",
      "            \">>> testfile = make_text_file(text='OCR Example')\\n\"\n",
      "            '>>> # Open the text file\\n'\n",
      "            '>>> open_file(testfile)\\n'\n",
      "            '>>> # Find the text with OCR\\n'\n",
      "            \">>> find_text_on_screen_ocr(text='OCR Example')\\n\",\n",
      " 'function_call': 'find_text_on_screen_ocr(text, criteria=None)',\n",
      " 'icon': 'las la-glasses',\n",
      " 'keywords': ['OCR',\n",
      "              'vision',\n",
      "              'AI',\n",
      "              'screen',\n",
      "              'citrix',\n",
      "              'read',\n",
      "              'optical character recognition'],\n",
      " 'name': 'Find text on screen with OCR',\n",
      " 'parameters': [{'description': ' Text to find. Only exact matches are '\n",
      "                                'returned.\\n',\n",
      "                 'name': ' text'},\n",
      "                {'description': ' Criteria to select on if multiple matches '\n",
      "                                'are found. If no criteria is specified all '\n",
      "                                'matches will be returned. Options are '\n",
      "                                \"'first', which returns the first match \"\n",
      "                                \"closest to the upper left corner, 'last' \"\n",
      "                                'returns the last match closest to the lower '\n",
      "                                'right corner, random selects a random '\n",
      "                                'match.\\n',\n",
      "                 'name': ' criteria'}],\n",
      " 'return': ' Dictionary or list of dictionaries with matches with following '\n",
      "           \"elements: 'h' height in pixels, 'text' the matched text,'w' the \"\n",
      "           \"width in pixels, 'x' absolute x-coördinate , 'y' absolute \"\n",
      "           'y-coördinate. Returns nothing if no matches are found\\n',\n",
      " 'snippet': '# Make a text file with some text to recognize\\n'\n",
      "            \"testfile = make_text_file(text='OCR Example')\\n\"\n",
      "            '# Open the text file\\n'\n",
      "            'open_file(testfile)\\n'\n",
      "            '# Find the text with OCR\\n'\n",
      "            \"find_text_on_screen_ocr(text='OCR Example')\\n\"}\n",
      "{'description': 'This activity clicks on position (coordinates) of specified '\n",
      "                'text on the current screen using OCR.',\n",
      " 'example': '>>> # Make a text file with some text to recognize\\n'\n",
      "            \">>> testfile = make_text_file(text='OCR Example')\\n\"\n",
      "            '>>> # Open the text file\\n'\n",
      "            '>>> open_file(testfile)\\n'\n",
      "            '>>> # Find the text with OCR and click on it\\n'\n",
      "            \">>> click_on_text_ocr(text='OCR Example')\\n\",\n",
      " 'function_call': 'click_on_text_ocr(text, delay=1)',\n",
      " 'icon': 'las la-mouse-pointer',\n",
      " 'keywords': ['OCR',\n",
      "              'vision',\n",
      "              'AI',\n",
      "              'screen',\n",
      "              'citrix',\n",
      "              'read',\n",
      "              'optical character recognition',\n",
      "              'click'],\n",
      " 'name': 'Click on text with OCR',\n",
      " 'parameters': [{'description': ' Text to find. Only exact matches are '\n",
      "                                'returned.\\n',\n",
      "                 'name': ' text'},\n",
      "                {'description': ' Delay before clicking in seconds\\n',\n",
      "                 'name': ' delay'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Make a text file with some text to recognize\\n'\n",
      "            \"testfile = make_text_file(text='OCR Example')\\n\"\n",
      "            '# Open the text file\\n'\n",
      "            'open_file(testfile)\\n'\n",
      "            '# Find the text with OCR and click on it\\n'\n",
      "            \"click_on_text_ocr(text='OCR Example')\\n\"}\n",
      "{'description': 'This activity double clicks on position (coordinates) of '\n",
      "                'specified text on the current screen using OCR.',\n",
      " 'example': '>>> # Make a text_file with some text to recognize\\n'\n",
      "            \">>> testfile = make_text_file(text='OCR Example')\\n\"\n",
      "            '>>> # Open the text file\\n'\n",
      "            '>>> open_file(testfile)\\n'\n",
      "            '>>> # Find the text with OCR and double click on it\\n'\n",
      "            \">>> double_click_on_text_ocr(text='OCR Example')\\n\",\n",
      " 'function_call': 'double_click_on_text_ocr(text, delay=1)',\n",
      " 'icon': 'las la-mouse-pointer',\n",
      " 'keywords': ['OCR',\n",
      "              'vision',\n",
      "              'AI',\n",
      "              'screen',\n",
      "              'citrix',\n",
      "              'read',\n",
      "              'optical character recognition',\n",
      "              'click',\n",
      "              'double click'],\n",
      " 'name': 'Double click on text with OCR',\n",
      " 'parameters': [{'description': ' Text to find. Only exact matches are '\n",
      "                                'returned.\\n',\n",
      "                 'name': ' text'},\n",
      "                {'description': ' Delay before clicking in seconds\\n',\n",
      "                 'name': ' delay'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Make a text_file with some text to recognize\\n'\n",
      "            \"testfile = make_text_file(text='OCR Example')\\n\"\n",
      "            '# Open the text file\\n'\n",
      "            'open_file(testfile)\\n'\n",
      "            '# Find the text with OCR and double click on it\\n'\n",
      "            \"double_click_on_text_ocr(text='OCR Example')\\n\"}\n",
      "{'description': 'This activity Right clicks on position (coordinates) of '\n",
      "                'specified text on the current screen using OCR.',\n",
      " 'example': '>>> # Make a text file with some text to recognize\\n'\n",
      "            \">>> testfile = make_text_file(text='OCR Example')\\n\"\n",
      "            '>>> # Open the text file\\n'\n",
      "            '>>> open_file(testfile)\\n'\n",
      "            '>>> # Find the text with OCR and right click on it\\n'\n",
      "            \">>> right_click_on_text_ocr(text='OCR Example')\\n\",\n",
      " 'function_call': 'right_click_on_text_ocr(text, delay=1)',\n",
      " 'icon': 'las la-mouse-pointer',\n",
      " 'keywords': ['OCR',\n",
      "              'vision',\n",
      "              'AI',\n",
      "              'screen',\n",
      "              'citrix',\n",
      "              'read',\n",
      "              'optical character recognition',\n",
      "              'click',\n",
      "              'right click'],\n",
      " 'name': 'Right click on text with OCR',\n",
      " 'parameters': [{'description': ' Text to find. Only exact matches are '\n",
      "                                'returned.\\n',\n",
      "                 'name': ' text'},\n",
      "                {'description': ' Delay before clicking in seconds\\n',\n",
      "                 'name': ' delay'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Make a text file with some text to recognize\\n'\n",
      "            \"testfile = make_text_file(text='OCR Example')\\n\"\n",
      "            '# Open the text file\\n'\n",
      "            'open_file(testfile)\\n'\n",
      "            '# Find the text with OCR and right click on it\\n'\n",
      "            \"right_click_on_text_ocr(text='OCR Example')\\n\"}\n",
      "{'description': 'This activity allows you to execute a process designed with '\n",
      "                'the UiPath Studio. All console output from the Write Line '\n",
      "                'activity (https://docs.uipath.com/activities/docs/write-line) '\n",
      "                'will be printed as output.',\n",
      " 'example': '>>> # Run a UiPath process\\n'\n",
      "            \">>> arguments = {'firstname': 'John', 'lastname': 'Doe'}\\n\"\n",
      "            '>>> execute_uipath_process(r\"C:\\\\Processes '\n",
      "            'UiPath\\\\my_process.xaml\", arguments=arguments)\\n'\n",
      "            'Completed UiPath process \"C:\\\\Processes '\n",
      "            'UiPath\\\\my_process.xaml\"\\n',\n",
      " 'function_call': 'execute_uipath_process(project_file_path, arguments=None, '\n",
      "                  'uirobot_exe_path=None)',\n",
      " 'icon': 'las la-robot',\n",
      " 'keywords': ['RPA',\n",
      "              'UiPath',\n",
      "              'Studio',\n",
      "              'robot',\n",
      "              'orchestrator',\n",
      "              'xaml',\n",
      "              'ui path'],\n",
      " 'name': 'Execute a UiPath process',\n",
      " 'parameters': [{'description': ' path to the project file (as created within '\n",
      "                                'the UiPath Studio)\\n',\n",
      "                 'name': ' project_file_path'},\n",
      "                {'description': ' dictionary with input arguments/parameters '\n",
      "                                'for the process to use in UiPath (optional)\\n',\n",
      "                 'name': ' arguments'},\n",
      "                {'description': \" path to UiPath's UiRobot.exe (optional)\\n\",\n",
      "                 'name': ' uirobot_exe_path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Run a UiPath process\\n'\n",
      "            \"arguments = {'firstname': 'John', 'lastname': 'Doe'}\\n\"\n",
      "            'execute_uipath_process(r\"C:\\\\Processes UiPath\\\\my_process.xaml\", '\n",
      "            'arguments=arguments)\\n'}\n",
      "{'description': 'This activity allows you to run an AutoIt script. If you use '\n",
      "                'the ConsoleWrite function '\n",
      "                '(https://www.autoitscript.com/autoit3/docs/functions/ConsoleWrite.htm), '\n",
      "                'the output will be presented to you.',\n",
      " 'example': '>>> # Run an AutoIt script\\n'\n",
      "            \">>> arguments = 'John'\\n\"\n",
      "            '>>> run_autoit_script(r\"C:\\\\AutoIt\\\\Scripts\\\\MyScript.au3\", '\n",
      "            'arguments=arguments) # Point this to your AutoIt Script\\n'\n",
      "            'Completed AutoIt script \"C:\\\\AutoIt\\\\Scripts\\\\MyScript.au3\"\\n',\n",
      " 'function_call': 'run_autoit_script(script_path, arguments=None, '\n",
      "                  'autoit_exe_path=None)',\n",
      " 'icon': 'las la-robot',\n",
      " 'keywords': ['RPA', 'AutoIt', 'au3', 'au'],\n",
      " 'name': 'Execute a AutoIt script',\n",
      " 'parameters': [{'description': \" path to the '.au3' script file\\n\",\n",
      "                 'name': ' script_path'},\n",
      "                {'description': ' string with input arguments/parameters for '\n",
      "                                'the script (optional)\\n',\n",
      "                 'name': ' arguments'},\n",
      "                {'description': ' path to AutoIt.exe (optional)\\n',\n",
      "                 'name': ' autoit_exe_path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Run an AutoIt script\\n'\n",
      "            \"arguments = 'John'\\n\"\n",
      "            'run_autoit_script(r\"C:\\\\AutoIt\\\\Scripts\\\\MyScript.au3\", '\n",
      "            'arguments=arguments) # Point this to your AutoIt Script\\n'}\n",
      "{'description': 'This activity allows you to run a Robot Framework test case. '\n",
      "                'Console output of the test case will be printed.',\n",
      " 'example': '>>> # Run an Robot Framework test case\\n'\n",
      "            \">>> variables = {'FIRSTNAME': 'John', 'LASTNAME': 'Doe'}\\n\"\n",
      "            '>>> execute_robotframework_test(r\"C:\\\\Test '\n",
      "            'Cases\\\\my_test_case.robot\", variables=variables) # Point this to '\n",
      "            'your Robot Framework test case\\n'\n",
      "            'Completed Robot Framework test case \"C:\\\\Test '\n",
      "            'Cases\\\\my_test_case.robot\"\\n',\n",
      " 'function_call': 'execute_robotframework_test(test_case_path, variables=None)',\n",
      " 'icon': 'las la-robot',\n",
      " 'keywords': ['RPA', 'robot framework', 'robotframework', 'robot'],\n",
      " 'name': 'Execute a Robot Framework test case',\n",
      " 'parameters': [{'description': \" path to the '.robot' test case file\\n\",\n",
      "                 'name': ' test_case_path'},\n",
      "                {'description': ' dictionary with variable declarations\\n',\n",
      "                 'name': ' variables'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Run an Robot Framework test case\\n'\n",
      "            \"variables = {'FIRSTNAME': 'John', 'LASTNAME': 'Doe'}\\n\"\n",
      "            'execute_robotframework_test(r\"C:\\\\Test '\n",
      "            'Cases\\\\my_test_case.robot\", variables=variables) # Point this to '\n",
      "            'your Robot Framework test case\\n'}\n",
      "{'description': 'password=\"\",sso=False,inputs=None,automatec_exe_path=None,):\"\"\"Run '\n",
      "                'a Blue Prism process',\n",
      " 'example': '>>> # Run a Blue Prism process\\n'\n",
      "            \">>> inputs = {'firstname': 'John', 'lastname': 'Doe'}\\n\"\n",
      "            '>>> run_blueprism_process(\"My Example Process\", username=\"user\", '\n",
      "            'password=\"password\", inputs=inputs)\\n'\n",
      "            'Completed Blue Prism process \"My Example Process\"\\n',\n",
      " 'function_call': 'run_blueprism_process(',\n",
      " 'icon': 'las la-robot',\n",
      " 'keywords': ['RPA', 'blueprism', 'blue prism', 'robot'],\n",
      " 'name': 'process_name,',\n",
      " 'parameters': [{'description': ' name of the process in Blue Prism\\n',\n",
      "                 'name': ' process_name'},\n",
      "                {'description': ' Blue Prism username\\n', 'name': ' username'},\n",
      "                {'description': ' Blue Prism password\\n', 'name': ' password'},\n",
      "                {'description': ' Run as single-sign on user with Blue Prism\\n',\n",
      "                 'name': ' sso'},\n",
      "                {'description': ' dictionary with inputs declarations '\n",
      "                                '(optional)\\n',\n",
      "                 'name': ' inputs'},\n",
      "                {'description': \" path to Blue Prism's AutomateC.exe \"\n",
      "                                '(optional)\\n',\n",
      "                 'name': ' automatec_exe_path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Run a Blue Prism process\\n'\n",
      "            \"inputs = {'firstname': 'John', 'lastname': 'Doe'}\\n\"\n",
      "            'run_blueprism_process(\"My Example Process\", username=\"user\", '\n",
      "            'password=\"password\", inputs=inputs)\\n'}\n",
      "{'description': 'This activity allows you to run an Automation Anywhere task.',\n",
      " 'example': '>>> # Run an Automation Anywhere task\\n'\n",
      "            '>>> '\n",
      "            'run_automationanywhere_task(r\"C:\\\\AutomationAnywhereTasks\\\\MyTask.atmx\")\\n'\n",
      "            'Completed Automation Anywhere task '\n",
      "            '\"C:\\\\AutomationAnywhereTasks\\\\MyTask.atmx\"\\n',\n",
      " 'function_call': 'run_automationanywhere_task(task_file_path, '\n",
      "                  'aaplayer_exe_path=None)',\n",
      " 'icon': 'las la-robot',\n",
      " 'keywords': ['RPA', 'automation anywhere', 'aa', 'robot'],\n",
      " 'name': 'Run an Automation Anywhere task',\n",
      " 'parameters': [{'description': ' path to the task file of Automation '\n",
      "                                'Anywhere\\n',\n",
      "                 'name': ' task_file_path'},\n",
      "                {'description': ' path to the AAPlayer.exe (optional)\\n',\n",
      "                 'name': ' aaplayer_exe_path'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Run an Automation Anywhere task\\n'\n",
      "            'run_automationanywhere_task(r\"C:\\\\AutomationAnywhereTasks\\\\MyTask.atmx\")\\n'}\n",
      "{'description': 'Raises an exception',\n",
      " 'example': '>>> # Log in to SAP GUI\\n'\n",
      "            '>>> sap = SAPGUI()\\n'\n",
      "            \">>> sap.login('System', '001', 'username', 'password')\\n\",\n",
      " 'function_call': 'raise_exception(message=\"Exception\", exception=Exception)',\n",
      " 'icon': 'las la-briefcase',\n",
      " 'keywords': ['sap', 'sap gui', 'sap client'],\n",
      " 'name': 'Raise exception',\n",
      " 'parameters': [{'description': ' Message\\n', 'name': ' message'},\n",
      "                {'description': ' Exception to raise\\n', 'name': ' exception'},\n",
      "                {'description': ' Specifiy the installation location of the '\n",
      "                                'saplogon.exe if not at the default '\n",
      "                                'location.\\n',\n",
      "                 'name': ' sap_logon_exe_path'},\n",
      "                {'description': ' Number of seconds to wait between tries for '\n",
      "                                'attaching to the SAP process\\n',\n",
      "                 'name': ' delay'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Log in to SAP GUI\\n'\n",
      "            'sap = SAPGUI()\\n'\n",
      "            \"sap.login('System', '001', 'username', 'password')\\n\"}\n",
      "{'description': 'Quits the SAP GUI completely and forcibly.',\n",
      " 'example': '>>> # Log in to SAP GUI\\n'\n",
      "            '>>> sap = SAPGUI()\\n'\n",
      "            \">>> sap.login('System', '001', 'username', 'password')\\n\"\n",
      "            '>>> # Quit SAP\\n'\n",
      "            '>>> sap.quit()\\n',\n",
      " 'function_call': 'quit(self)',\n",
      " 'icon': 'las la-briefcase',\n",
      " 'keywords': ['sap', 'sap gui', 'sap client', 'quit'],\n",
      " 'name': 'Quit SAP GUI',\n",
      " 'parameters': [],\n",
      " 'return': '',\n",
      " 'snippet': '# Log in to SAP GUI\\n'\n",
      "            'sap = SAPGUI()\\n'\n",
      "            \"sap.login('System', '001', 'username', 'password')\\n\"\n",
      "            '# Quit SAP\\n'\n",
      "            'sap.quit()\\n'}\n",
      "{'description': 'Logs in to an SAP system on SAP GUI.',\n",
      " 'example': '>>> # Log in to SAP GUI\\n'\n",
      "            '>>> sap = SAPGUI()\\n'\n",
      "            \">>> sap.login('System', '001', 'username', 'password')\\n\",\n",
      " 'function_call': 'login(environment, client, username, password, force=True)',\n",
      " 'icon': 'las la-briefcase',\n",
      " 'keywords': ['sap', 'sap gui', 'sap client', 'login'],\n",
      " 'name': 'Log in to SAP GUI',\n",
      " 'parameters': [{'description': ' Environment\\n', 'name': ' environment'},\n",
      "                {'description': ' Client\\n', 'name': ' client'},\n",
      "                {'description': ' Username\\n', 'name': ' username'},\n",
      "                {'description': ' Password\\n', 'name': ' password'},\n",
      "                {'description': ' Force optional\\n', 'name': ' force'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Log in to SAP GUI\\n'\n",
      "            'sap = SAPGUI()\\n'\n",
      "            \"sap.login('System', '001', 'username', 'password')\\n\"}\n",
      "{'description': 'Clicks on an identifier in the SAP GUI.',\n",
      " 'example': '>>> # Log in to SAP GUI\\n'\n",
      "            '>>> sap = SAPGUI()\\n'\n",
      "            \">>> sap.login('System', '001', 'username', 'password')\\n\"\n",
      "            \">>> logout_button = '/app/con[0]/ses[0]/wnd[0]/tbar[0]/btn[15]'\\n\"\n",
      "            '>>> sap.highlight(logout_button)\\n'\n",
      "            '>>> sap.click_sap(logout_button)\\n',\n",
      " 'function_call': 'click_sap(identifier)',\n",
      " 'icon': 'las la-briefcase',\n",
      " 'keywords': ['sap', 'sap gui', 'sap client', 'click'],\n",
      " 'name': 'Click on a SAP GUI element',\n",
      " 'parameters': [{'description': ' Technical identifier of the element\\n',\n",
      "                 'name': ' identifier'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Log in to SAP GUI\\n'\n",
      "            'sap = SAPGUI()\\n'\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            \"sap.login('System', '001', 'username', 'password')\\n\"\n",
      "            \"logout_button = '/app/con[0]/ses[0]/wnd[0]/tbar[0]/btn[15]'\\n\"\n",
      "            'sap.highlight(logout_button)\\n'\n",
      "            'sap.click_sap(logout_button)\\n'}\n",
      "{'description': 'Retrieves the text from a SAP GUI element.',\n",
      " 'example': '>>> # Log in to SAP GUI\\n'\n",
      "            '>>> sap = SAPGUI()\\n'\n",
      "            \">>> sap.login('System', '001', 'username', 'password')\\n\"\n",
      "            \">>> status_bar = '/app/con[0]/ses[0]/wnd[0]/sbar/pane[0]'\\n\"\n",
      "            '>>> sap.get_text(status_bar)\\n',\n",
      " 'function_call': 'get_text(identifier)',\n",
      " 'icon': 'las la-briefcase',\n",
      " 'keywords': ['sap', 'sap gui', 'sap client', 'get text'],\n",
      " 'name': 'Get text from a SAP GUI element',\n",
      " 'parameters': [{'description': ' Technical identifier of the element\\n',\n",
      "                 'name': ' identifier'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Log in to SAP GUI\\n'\n",
      "            'sap = SAPGUI()\\n'\n",
      "            \"sap.login('System', '001', 'username', 'password')\\n\"\n",
      "            \"status_bar = '/app/con[0]/ses[0]/wnd[0]/sbar/pane[0]'\\n\"\n",
      "            'sap.get_text(status_bar)\\n'}\n",
      "{'description': 'Sets the text of a SAP GUI element.',\n",
      " 'example': '>>> # Log in to SAP GUI\\n'\n",
      "            '>>> sap = SAPGUI()\\n'\n",
      "            \">>> sap.login('System', '001', 'username', 'password')\\n\"\n",
      "            \">>> sap.set_text('/app/con[0]/ses[0]/wnd[0]/tbar[0]/okcd', \"\n",
      "            \"'Hello!')\\n\",\n",
      " 'function_call': 'set_text(identifier, text)',\n",
      " 'icon': 'las la-briefcase',\n",
      " 'keywords': ['sap', 'sap gui', 'sap client', 'set text'],\n",
      " 'name': 'Set text of a SAP GUI element',\n",
      " 'parameters': [{'description': ' Text to set\\n', 'name': ' text'},\n",
      "                {'description': ' Technical identifier of the element\\n',\n",
      "                 'name': ' identifier'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Log in to SAP GUI\\n'\n",
      "            'sap = SAPGUI()\\n'\n",
      "            \"sap.login('System', '001', 'username', 'password')\\n\"\n",
      "            \"sap.set_text('/app/con[0]/ses[0]/wnd[0]/tbar[0]/okcd', \"\n",
      "            \"'Hello!')\\n\"}\n",
      "{'description': 'Temporarily highlights a SAP GUI element',\n",
      " 'example': '>>> # Log in to SAP GUI\\n'\n",
      "            '>>> sap = SAPGUI()\\n'\n",
      "            \">>> sap.login('System', '001', 'username', 'password')\\n\"\n",
      "            \">>> sap.highlight('/app/con[0]/ses[0]/wnd[0]/tbar[0]/okcd', \"\n",
      "            \"'Hello!')\\n\",\n",
      " 'function_call': 'highlight(identifier, duration=1)',\n",
      " 'icon': 'las la-briefcase',\n",
      " 'keywords': ['sap', 'sap gui', 'sap client', 'highlight'],\n",
      " 'name': 'Highlights a SAP GUI element',\n",
      " 'parameters': [{'description': ' Technical identifier of the element\\n',\n",
      "                 'name': ' identifier'},\n",
      "                {'description': ' Duration of the highlight\\n',\n",
      "                 'name': ' duration'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Log in to SAP GUI\\n'\n",
      "            'sap = SAPGUI()\\n'\n",
      "            \"sap.login('System', '001', 'username', 'password')\\n\"\n",
      "            \"sap.highlight('/app/con[0]/ses[0]/wnd[0]/tbar[0]/okcd', \"\n",
      "            \"'Hello!')\\n\"}\n",
      "{'description': 'This activity creates a new job in the Automagica Portal for '\n",
      "                'a given process. The bot performing this activity needs to be '\n",
      "                'in the same team as the process it creates a job for.',\n",
      " 'example': '>>> # Create a job in the Automagica Portal\\n'\n",
      "            \">>> create_new_job_in_portal('My process')\\n\"\n",
      "            'Job 1234567890 created\\n',\n",
      " 'function_call': 'create_new_job_in_portal(process_name, '\n",
      "                  'process_version_id=None, priority=0, parameters=None)',\n",
      " 'icon': 'las la-robot',\n",
      " 'keywords': ['queueing', 'process', 'job', 'create job', 'new job'],\n",
      " 'name': 'Create a new job in the Automagica Portal',\n",
      " 'parameters': [{'description': ' name of the process\\n',\n",
      "                 'name': ' process_name'},\n",
      "                {'description': ' id of a specific version of the process, if '\n",
      "                                'not provided it will use the latest version '\n",
      "                                '(optional)\\n',\n",
      "                 'name': ' process_version_id'},\n",
      "                {'description': ' priority level of the process. higher '\n",
      "                                'priority levels are performed first. '\n",
      "                                '(optional)\\n',\n",
      "                 'name': ' priority'},\n",
      "                {'description': ' parameters for the process (optional)\\n',\n",
      "                 'name': ' parameters'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Create a job in the Automagica Portal\\n'\n",
      "            \"create_new_job_in_portal('My process')\\n\"}\n",
      "{'description': 'This activity retrieves a credential from the Automagica '\n",
      "                'Portal.',\n",
      " 'example': '>>> # Get a credential from the Portal\\n'\n",
      "            \">>> print(get_credential_from_portal('My credential'))\\n\"\n",
      "            \"'secretpassword'\\n\",\n",
      " 'function_call': 'get_credential_from_portal(credential_name)',\n",
      " 'icon': 'las la-key',\n",
      " 'keywords': ['password', 'credential', 'portal', 'login', 'username'],\n",
      " 'name': 'Get a credential from the Automagica Portal',\n",
      " 'parameters': [{'description': ' name of the credential\\n',\n",
      "                 'name': ' credential_name'}],\n",
      " 'return': ' Credential\\n',\n",
      " 'snippet': '# Get a credential from the Portal\\n'\n",
      "            \"print(get_credential_from_portal('My credential'))\\n\"}\n",
      "{'description': 'This activity can be used to check if a certain element is '\n",
      "                'visible on the screen.Note that this uses Automagica Portal '\n",
      "                'and uses some advanced an fuzzy matching algorithms for '\n",
      "                'finding identical elements.',\n",
      " 'example': '>>> # Use the recorder to find an element ID\\n'\n",
      "            '>>> # Run the Windows calculator and try to perform the activity\\n'\n",
      "            \">>> run('calc.exe')\\n\"\n",
      "            '>>> # Use the element ID found by the recorder, in this case ID '\n",
      "            \"'qf41'. You can also view this on automagica.id/qf41 \\n\"\n",
      "            '>>> #  If you have a vastly different version or layout the '\n",
      "            'element might not be found, use the recorder \\n'\n",
      "            \">>> is_visible('qf41')\\n\",\n",
      " 'function_call': 'is_visible(automagica_id, delay=1, timeout=30)',\n",
      " 'icon': 'las la-eye',\n",
      " 'keywords': ['click',\n",
      "              'visible',\n",
      "              'is visible',\n",
      "              'appear',\n",
      "              ' computer vision',\n",
      "              'vision',\n",
      "              'AI'],\n",
      " 'name': 'Check if element is visible on screen',\n",
      " 'parameters': [{'description': ' Element ID provided by the recorder\\n',\n",
      "                 'name': ' automagica_id'},\n",
      "                {'description': ' Delay before checking visibility in '\n",
      "                                'seconds\\n',\n",
      "                 'name': ' delay'},\n",
      "                {'description': ' Time before timeout (maximum time to wait) '\n",
      "                                'in seconds\\n',\n",
      "                 'name': ' timeout'}],\n",
      " 'return': ' True if visble, False if not\\n',\n",
      " 'snippet': '# Use the recorder to find an element ID\\n'\n",
      "            '# Run the Windows calculator and try to perform the activity\\n'\n",
      "            \"run('calc.exe')\\n\"\n",
      "            '# Use the element ID found by the recorder, in this case ID '\n",
      "            \"'qf41'. You can also view this on automagica.id/qf41 \\n\"\n",
      "            '#  If you have a vastly different version or layout the element '\n",
      "            'might not be found, use the recorder \\n'\n",
      "            \"is_visible('qf41')\\n\"}\n",
      "{'description': 'Wait for an element that is defined the recorder',\n",
      " 'example': '>>> # Use the recorder to find the element ID to wait for\\n'\n",
      "            '>>> # Run the Windows calculator and try to perform the activity\\n'\n",
      "            \">>> run('calc.exe')\\n\"\n",
      "            '>>> # Use the element ID found by the recorder, in this case ID '\n",
      "            \"'qf41'. You can also view this on automagica.id/qf41 \\n\"\n",
      "            '>>> #  If you have a vastly different version or layout the '\n",
      "            'element might not be found, use the recorder \\n'\n",
      "            \">>> wait_appear('qf41')\\n\",\n",
      " 'function_call': 'wait_appear(automagica_id, delay=1, timeout=30)',\n",
      " 'icon': 'las la-eye',\n",
      " 'keywords': ['click', 'computer vision', 'vision', 'AI'],\n",
      " 'name': 'Wait for an element to appear',\n",
      " 'parameters': [{'description': ' The element ID provided by the recorder\\n',\n",
      "                 'name': ' automagica_id'},\n",
      "                {'description': ' Delay before waiting to appear in seconds\\n',\n",
      "                 'name': ' delay'},\n",
      "                {'description': ' Maximum time to wait for an element in '\n",
      "                                'seconds\\n',\n",
      "                 'name': ' timeout'}],\n",
      " 'return': ' Blocks while element not visible\\n',\n",
      " 'snippet': '# Use the recorder to find the element ID to wait for\\n'\n",
      "            '# Run the Windows calculator and try to perform the activity\\n'\n",
      "            \"run('calc.exe')\\n\"\n",
      "            '# Use the element ID found by the recorder, in this case ID '\n",
      "            \"'qf41'. You can also view this on automagica.id/qf41 \\n\"\n",
      "            '#  If you have a vastly different version or layout the element '\n",
      "            'might not be found, use the recorder \\n'\n",
      "            \"wait_appear('qf41')\\n\"}\n",
      "{'description': 'This activity allows the bot to wait for an element to '\n",
      "                'vanish.',\n",
      " 'example': '>>> # Use the recorder to find the element ID for the vanishing '\n",
      "            'element\\n'\n",
      "            '>>> # Run the Windows calculator and try to perform the activity\\n'\n",
      "            \">>> run('calc.exe')\\n\"\n",
      "            '>>> # Use the element ID found by the recorder, in this case ID '\n",
      "            \"'qf41'. You can also view this on automagica.id/qf41 \\n\"\n",
      "            '>>> #  If you have a vastly different version or layout the '\n",
      "            'element might not be found, use the recorder \\n'\n",
      "            \">>> wait_vanish('qf41')\\n\",\n",
      " 'function_call': 'wait_vanish(automagica_id, delay=1, timeout=30)',\n",
      " 'icon': 'las la-eye',\n",
      " 'keywords': ['wait', 'disappear', 'computer vision', 'vision', 'AI'],\n",
      " 'name': 'Wait Vanish',\n",
      " 'parameters': [{'description': ' The element ID provided by the recorder\\n',\n",
      "                 'name': ' automagica_id'},\n",
      "                {'description': ' Delay before waiting for vanish in seconds\\n',\n",
      "                 'name': ' delay'},\n",
      "                {'description': ' Maximum time to wait for an element in '\n",
      "                                'seconds\\n',\n",
      "                 'name': ' timeout'}],\n",
      " 'return': '',\n",
      " 'snippet': '# Use the recorder to find the element ID for the vanishing '\n",
      "            'element\\n'\n",
      "            '# Run the Windows calculator and try to perform the activity\\n'\n",
      "            \"run('calc.exe')\\n\"\n",
      "            '# Use the element ID found by the recorder, in this case ID '\n",
      "            \"'qf41'. You can also view this on automagica.id/qf41 \\n\"\n",
      "            '#  If you have a vastly different version or layout the element '\n",
      "            'might not be found, use the recorder \\n'\n",
      "            \"wait_vanish('qf41')\\n\"}\n",
      "{'description': 'This activity allows the bot to detect and read the text of '\n",
      "                'an element by using the Automagica Portal API with a provided '\n",
      "                'sample ID.',\n",
      " 'example': '>>> # Record an element to read with the recorder\\n'\n",
      "            '>>> # Run the Windows calculator and try to perform the activity\\n'\n",
      "            \">>> run('calc.exe')\\n\"\n",
      "            '>>> # Use the element ID found by the recorder, in this case ID '\n",
      "            \"'qf41'. You can also view this on automagica.id/qf41 \\n\"\n",
      "            '>>> #  If you have a vastly different version or layout the '\n",
      "            'element might not be found, use the recorder \\n'\n",
      "            \">>> read_text('qf41')\\n\",\n",
      " 'function_call': 'read_text(automagica_id, delay=1)',\n",
      " 'icon': 'las la-eye',\n",
      " 'keywords': ['click', 'computer vision', 'vision', 'AI'],\n",
      " 'name': 'Read Text with Automagica Wand',\n",
      " 'parameters': [{'description': ' the sample ID provided by Automagica Wand\\n',\n",
      "                 'name': ' automagica_id'},\n",
      "                {'description': ' Delay before reading text for vanish in '\n",
      "                                'seconds\\n',\n",
      "                 'name': ' delay'}],\n",
      " 'return': ' Text\\n',\n",
      " 'snippet': '# Record an element to read with the recorder\\n'\n",
      "            '# Run the Windows calculator and try to perform the activity\\n'\n",
      "            \"run('calc.exe')\\n\"\n",
      "            '# Use the element ID found by the recorder, in this case ID '\n",
      "            \"'qf41'. You can also view this on automagica.id/qf41 \\n\"\n",
      "            '#  If you have a vastly different version or layout the element '\n",
      "            'might not be found, use the recorder \\n'\n",
      "            \"read_text('qf41')\\n\"}\n"
     ]
    }
   ],
   "source": [
    "from pprint import pprint\n",
    "\n",
    "with open(activities_path, 'r', encoding='utf-8') as f:\n",
    "    lines = f.readlines()\n",
    "\n",
    "categories = []\n",
    "\n",
    "for i, line in enumerate(lines):\n",
    "    if line == '\"\"\"\\n': # Category\n",
    "        if lines[i+1].strip(): # Not empty\n",
    "            name = lines[i+1].strip()\n",
    "            icon = lines[i+2].strip().replace('Icon: ','')\n",
    "            if not icon:\n",
    "                raise Exception\n",
    "            category = {'name': name, 'icon': icon, 'activities':[]}\n",
    "            categories.append(category)\n",
    "            \n",
    "    if line.startswith('def ') or line.startswith('    def ') and not 'launch' in str(line): # Function definition\n",
    "        if lines[i-1].strip() == '@activity':\n",
    "            activity = {}\n",
    "            if '__init__' in line:\n",
    "                if '(' in lines[i-2]:\n",
    "                    parsed_class_line = lines[i-2].split('(')[0] + ':'\n",
    "                else:\n",
    "                    parsed_class_line = lines[i-2]\n",
    "                arguments = line.split('(')[-1].replace('):','')\n",
    "                func_call_raw = (parsed_class_line.replace('class ','').replace(':', '(') + arguments + ')').replace('\\n','')\n",
    "                activity['function_call'] = func_call_raw.replace('self, ','')\n",
    "\n",
    "            else:\n",
    "                func_call_raw = line.replace('def ','').replace(':', '').strip()\n",
    "                activity['function_call'] = func_call_raw.replace('self, ','')\n",
    "            activity['name'] = lines[i+1].replace('\"\"\"', '').strip()\n",
    "            if not activity['name']:\n",
    "                raise Exception('Activity {} should have a name'.format(activity['function_call']))\n",
    "\n",
    "            # Description (multiline)\n",
    "            activity['description'] = ''\n",
    "            for k, line3 in enumerate(lines[i+3:]):\n",
    "                if not line3.strip():\n",
    "                    break\n",
    "                activity['description'] += line3.strip()\n",
    "            if not activity['description']:\n",
    "                continue\n",
    "                raise Exception('Activity {} should have a description'.format(activity['name']))\n",
    "\n",
    "            # Parameters (multiline)\n",
    "            activity['parameters'] = []\n",
    "            activity['return'] = ''\n",
    "            for l, line_param in enumerate(lines[i:]):\n",
    "                if line_param.strip() == '@activity': # Till we reach next function\n",
    "                    break\n",
    "    \n",
    "                if ':parameter' in line_param:\n",
    "                    parameters = {}\n",
    "                    parameters['name'] = line_param.split(':parameter')[-1].split(':')[0]\n",
    "                    parameters['description'] = line_param.split(':',2)[-1]\n",
    "                    \n",
    "                    activity['parameters'].append(parameters)\n",
    "                \n",
    "                # Add return too\n",
    "                if ':return:' in line_param:\n",
    "                    activity['return'] = line_param.split(':',2)[-1]\n",
    "            \n",
    "            # Example (multiline)\n",
    "            activity['example'] = ''\n",
    "            for l, line4 in enumerate(lines[i:]):\n",
    "                if line4.strip() == '@activity': # Till we reach next function\n",
    "                    break\n",
    "\n",
    "                if line4.strip() == ':Example:':\n",
    "                    number_of_spaces = len(lines[i:][l+2]) - len(lines[i:][l+2].lstrip())\n",
    "                    for m, line5 in enumerate(lines[i:][l+2:]):\n",
    "                        if not line5.strip():\n",
    "                            break\n",
    "                        activity['example'] += line5[number_of_spaces:]\n",
    "                    break\n",
    "            \n",
    "            # Add copy-paste example\n",
    "            activity['snippet'] = ''\n",
    "            for example_line in activity['example'].split('\\n'):\n",
    "                if example_line.strip():\n",
    "                    if example_line[0] in ['>','#',' ']:\n",
    "                        activity['snippet'] += example_line.replace('>>> ','') + '\\n'\n",
    "             \n",
    "            if not activity['example']:\n",
    "                raise Exception('Activity {} should have an example'.format(activity['name']))\n",
    "                \n",
    "            # Single lines\n",
    "            for j, line2 in enumerate(lines[i:]):\n",
    "                if line2.strip() == '@activity': # Till we reach next function\n",
    "                    break\n",
    "\n",
    "                if line2.strip() == 'Icon': # Icon\n",
    "                    activity['icon'] = lines[i:][j+1].strip().replace('<i class=\"', '').replace('\"></i>', '')\n",
    "\n",
    "                if line2.strip() == 'Keywords': # Keywords\n",
    "                    activity['keywords'] = lines[i:][j+1].strip().split(', ')\n",
    "\n",
    "            category['activities'].append(activity)\n",
    "            pprint(activity)\n",
    "            if not activity.get('icon'):\n",
    "                raise Exception('Activity {} should have an icon'.format(activity['name']))\n",
    "        \n",
    "import json\n",
    "with open('activities.json', 'w') as f:\n",
    "    json.dump(categories, f)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "%%capture cap --no-stderr\n",
    "\n",
    "# Build activities.rst file\n",
    "\n",
    "print('.. module:: automagica.activities')\n",
    "print('')\n",
    "print('Activities')\n",
    "print('==========')\n",
    "print('')\n",
    "title = ''\n",
    "for item in categories:\n",
    "    print('\\n')\n",
    "    print(item['name'])\n",
    "    underline = ''\n",
    "    for char in range(0,len(item['name'])):\n",
    "        underline = underline + '-'\n",
    "    print(underline)\n",
    "    \n",
    "    for i in item['activities']:\n",
    "        function = i['function_call']\n",
    "        if function[0].isupper():\n",
    "            class_name = i['function_call'].split('(')[0]\n",
    "            class_name_rst = '.. autoclass:: ' + class_name +'\\n' + '   :members:' \n",
    "            print(class_name_rst)\n",
    "            break\n",
    "        function_name = i['function_call'].split('(')[0]\n",
    "        function_name_rst = '.. autofunction:: ' + function_name\n",
    "        print(function_name_rst)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Written to C:\\Users\\TvT\\repositories\\automagica\\docs\\source\\activities.rst\n"
     ]
    }
   ],
   "source": [
    "# Write to activities.rst file\n",
    "\n",
    "with open(activities_rst_path, 'w') as f:\n",
    "    f.write(cap.stdout)\n",
    "    \n",
    "print('Written to ' + activities_rst_path)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "%%capture cap2 --no-stderr\n",
    "\n",
    "# Build the readme.md\n",
    "\n",
    "print('Process | Description')\n",
    "print('------- | -----------')\n",
    "title = ''\n",
    "for item in categories:\n",
    "    print('**' + item['name'] + '** | ‌‌ ')   \n",
    "    for i in item['activities']:\n",
    "        icon = i['icon']\n",
    "        icon_name = str(i['icon'].split('la-')[-1])\n",
    "        if icon_name not in ['html5', 'trello', 'salesforce', 'chrome', 'readme']:\n",
    "            icon_name = icon_name + '-solid.svg'\n",
    "        else:\n",
    "            icon_name = icon_name + '.svg'\n",
    "        icon_html = '<img src=\"https://cdn.jsdelivr.net/npm/line-awesome@1.3.0/svg/' + icon_name + '\" width=\"20\">'\n",
    "        name = i['name']\n",
    "        docs_link = 'https://automagica.readthedocs.io/activities.html#automagica.activities.' + i['function_call'].split('(')[0]\n",
    "        linked_name = '[' + str(name) + ']' + '(' + str(docs_link) + ')'\n",
    "        description = i['description']\n",
    "        line = icon_html + ' ' + linked_name + ' | ' + description\n",
    "        print(line)\n",
    "        \n",
    "print('|<img width=150/>|  ‌‌|')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Replace specific part in the readme.md with the new documentation\n",
    "\n",
    "def find_first_sublist(seq, sublist, start=0):\n",
    "    length = len(sublist)\n",
    "    for index in range(start, len(seq)):\n",
    "        if seq[index:index+length] == sublist:\n",
    "            return index, index+length\n",
    "\n",
    "def replace_sublist(seq, sublist, replacement):\n",
    "    length = len(replacement)\n",
    "    index = 0\n",
    "    for start, end in iter(lambda: find_first_sublist(seq, sublist, index), None):\n",
    "        seq[start:end] = replacement\n",
    "        index = start + length\n",
    "\n",
    "with open(github_readme_path, 'r', encoding='utf-8') as f:\n",
    "    lines = f.readlines()\n",
    "\n",
    "for line_n,line in enumerate(lines):\n",
    "    if \"An overview of all official Automagica activities:\" in line:\n",
    "        starting_index = line_n + 2\n",
    "    if \"## Credits\" in line:\n",
    "        ending_index = line_n - 1 \n",
    "\n",
    "new_readme = [] \n",
    "for printed_line in cap2.stdout.splitlines():\n",
    "    new_readme.append(printed_line + '\\n')\n",
    "\n",
    "# Replace in readme\n",
    "replace_sublist(lines, lines[starting_index:ending_index], new_readme)\n",
    "\n",
    "with open(github_readme_path, \"w\", encoding='utf-8') as of:\n",
    "    for line in lines:\n",
    "        of.write(line)\n",
    "\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
